mod_rewrite有时会将DocumentRoot路径添加到url

时间:2016-07-23 10:13:34

标签: php apache .htaccess mod-rewrite

我的DocumentRoot是 var / www / public

我关注.htaccess文件(在 var / www / public 内):

SetEnv APPLICATION_ENV development
RewriteEngine On

RewriteRule ^(.*)/$ $1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]

当我输入例如http://localhost:8080/en/schedule/时,它可以正常工作 - 重定向到网址而不会尾随斜杠(http://localhost:8080/en/schedule

但有些情况下效果不佳:

http://localhost:8080/en/news/重定向到http://localhost:8080/var/www/public/en/news

1 个答案:

答案 0 :(得分:1)

不同链接的不同行为是由网络浏览器缓存引起的。

新的.htaccess:

SetEnv APPLICATION_ENV development
RewriteEngine On

RewriteCond %{REQUEST_URI} ^(.*)/$
RewriteRule ^(.*)/$ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]