我正在尝试使用.htaccess重写页面网址。 我想转换像这样的链接(mysite.com/page.php - > mysite.com/page)
这是我在之前具有相同要求的网站中使用的代码
RewriteEngine on
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php
但是当我尝试访问mysite.com/page时,它会导致到404页面,而mysite.com/page.php将显示该页面。
有人可以解释我是否错过了某处的设置?我已将.htaccess文件放在站点根目录中,权限设置为644。
答案 0 :(得分:1)
我建议您使用%{REQUEST_FILENAME}
,而不是使用/
,而不是%{DOCUMENT_ROOT}/$1\.php
,我建议你使用Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
## To internally redirect /anything to /anything.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)$ $1.php [L]
,这是一个例子:
/$
此外,根据您的规则,您有/page
,这会再次导致您遇到麻烦,因为您希望抓住/?
。
您可以/
使.htaccess
成为可选项。
您的RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z0-9_-\s]+)/?$ /$1.php [NC,L]
已修复应如下所示:
{{1}}