我想要这些规则:
这适用于我的本地计算机,但不适用于服务器。 apache config是否有一些选项/标志或其他东西需要更改以支持此设置?
这是我当前的.htaccess文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?param=$1 [QSA,NC,L]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=302,L]
在我的本地计算机上,除了第3条规则(我尚未在.htaccess中实现)之外,此方法均有效。
在我的服务器(数字海洋,ubuntu)上:
答案 0 :(得分:0)
因此,答案的一部分是在@Martin建议的修复程序中。
其余:
# remove .php
RewriteCond %{REQUEST_URI} !^/(index|url)\.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=302]
# match .php if exists
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]