htaccess:如何删除index.php以外的php扩展名?param =

时间:2019-06-06 07:56:38

标签: php .htaccess

我想要这些规则:

  1. / string-smth匹配index.php?param = string-smth
  2. /一些带有破折号的文件 some-file-with-dashes.php
  3. /some-file-with-dashes.php删除.php扩展名 扩展名
  4. index.php重定向到/

这适用于我的本地计算机,但不适用于服务器。 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)上:

1 个答案:

答案 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]