我们有一个运行良好的重写规则,但我们重写的原因是因为目标 URL 不是那么整洁。
foo.com/bar -> foo.com/some/really/long/address
我想做的是将foo.com/bar
URL 保留在浏览器中,但显示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,它可以解决问题,但在我看来,这不是“好方法”。
希望能帮助到你。