我正在我的服务器上传我的网站。上面的重写规则正在我的localhost上运行。 URL“mywebsite.com/about”为我提供了“mywebsite.com/about.php”。但奇怪的事情发生了。
我的htaccess文件有正确的自动化,我知道因为其他规则(例如deflate)工作正常。
mod_rewrite已启用,我知道因为我的一些规则正在运行。但是,并非所有内容:当输入“mywebsite.com/about”或“mywebsite.com/about.php”时,我会被重定向到“mywebsite.com/about”,但它会显示404错误。
ErrorDocument 404 /includes/404.php
Options +FollowSymlinks
Options +MultiViews
DefaultType application/x-httpd-php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /en [L]
### to hide '.php' extensions
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ mywebsite.com/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ mywebsite.com/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
###
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
我真的很想帮助找到我出错的地方!
修改
我尝试访问的网页实际上是“mywebsite.com/en/about.php”,网址为“mywebsite.com/en/about”
编辑2:
我在.htaccess上留下了这条线:
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [NC,L]
它的作用是:严格禁止......如果我理解得很好,那么应该重定向URL而不扩展它的.php版本。当我去mywebsite.com/en/about时,我得到了404。
编辑3:
使用此其他脚本会产生相同的结果:重写“mywebsite.com/en/about”中的URL正在运行,但它不会重定向到.php版本。
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [NC,L]