我可以在 Apache2 上不重定向的情况下进行 URL 重写吗?

我可以在 Apache2 上不重定向的情况下进行 URL 重写吗?

我们有一个运行良好的重写规则,但我们重写的原因是因为目标 URL 不是那么整洁。

foo.com/bar -> foo.com/some/really/long/address

我想做的是将foo.com/barURL 保留在浏览器中,但显示foo.com/some/really/long/address页面。这可能吗?

答案1

mod_rewrite 满足您的需要。

这非常简单而且是一个强大的工具。

我建议读一下这个 ->http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

例如:

这将启动重写引擎,然后应用一些条件,如果条件为真,则应用重写本身。它就像一个 while/case 代码块。

最有帮助的部分是日志。;)

    RewriteEngine on
RewriteLogLevel 0
RewriteLog "/var/www/rewrite.log"

<Directory /var/www>

    Options -ExecCGI -Indexes
    AllowOverride none
    Order allow,deny
    allow from all
    #SetHandler none

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/(es|ca|en)/$ index.php?user=$1&lang=$2 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/$ index.php?user=$1&lang= [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/(\w+)?(/(.*))?$ index.php?user=$1&lang=$2$4 [L,QSA]

另外,您可以看看 mod_proxy,它可以解决问题,但在我看来,这不是“好方法”。

希望能帮助到你。

相关内容