我尝试使用 htaccess 来使我的网站 URL 简洁。我使用非常基本的 URL,例如:www.mysite.com/pagename.php(“pagename”是变量)。
我想要 www.mysite.com/pagename 显示 /pagename.php 的内容,
因此这现在在我的 htaccess 文件中:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
但我还希望我的旧网址(/pagename.php)在调用时被重写为 www.mysite.com/pagename
怎么办?我搞不懂(总是陷入循环)...
提前致谢!
答案1
添加另一个块来定义重写:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^([^\.]+)\.php$ $1 [NC,R=301,L]
RewriteRule ^([^\.]+)$ $1.php [NC,PT,L]
请注意,这RewriteBase
在这里非常重要。(请参阅http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase) — 否则您的 URL 将被重写为类似的内容,<hostname>/var/www/pagename.php
而不是预期的<hostname>/index.php
。