RewriteEngine不会影响URL重写

时间:2015-10-24 13:51:17

标签: apache .htaccess mod-rewrite url-rewriting

我正在尝试进行简单的网址重写(例如:' /toto.html'将在网址栏中显示为' / toto')。我的.htaccess文件中有以下代码,位于服务器的根目录(/):

ErrorDocument 403 /
ErrorDocument 404 /
Options All +FollowSymLinks -MultiViews -indexes
# Apache Rewrite Rules (-html extensions)
RewriteEngine On 
RewriteBase /
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP
RewriteRule (.*)\.html$ $1 [L,R=301]

确实有效:' /toto.html'被重新命名为' / toto'。但是,服务器一直试图将我重定向到没有.html扩展名的页面,而不是简单地重写它。我已经阅读了很多关于RewriteEngine被忽略的其他记录的问题,等等,并尝试了很多东西,没有任何成功。服务器仍在尝试解释URL,而不仅仅是重写它。

1 个答案:

答案 0 :(得分:0)

您需要一个重定向规则和一个重写规则:

ErrorDocument 403 /
ErrorDocument 404 /

Options All +FollowSymLinks -MultiViews -indexes
# Apache Rewrite Rules (-html extensions)
RewriteEngine On 
RewriteBase /

# To externally redirect /dir/file.html to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html [NC]
RewriteRule ^ /%1 [R=302,L]

# To internally forward /dir/file to /dir/file.html
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f
RewriteRule ^(.+?)/?$ $1.html [L]