我可以重写URL而不redirect到Apache2上吗?

我们有一个重写规则可以正常工作,但是我们重写的原因是因为目标URL不那么整洁。

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

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

mod_rewrite它你需要什么。

这很容易,它是一个强大的工具。

我build议阅读这个 – > 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,它会做的伎俩,但这不是我认为的“好方法”。

希望能帮助到你。