如何使用.htaccess从URL中删除扩展而不使用尾部斜杠?

时间:2016-03-31 17:46:00

标签: php apache .htaccess mod-rewrite

我有一个.htaccess文件:

          raise HttpAccessTokenRefreshError(error_msg, status=resp.status)

我有一个名为RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 的文件。

我想要做的只是调用random.php,但是Apache在URL的末尾添加了一个尾部斜杠(使用301重定向),因此会出现错误,指出无法找到something.com/random

编辑1:当我使用

something.com/random/.php

然后我的外部文件(.js,.css等)无法加载,服务器会以RewriteEngine On RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php [NC,L] 响应进行响应。 Apache说重定向太多了。

2 个答案:

答案 0 :(得分:1)

使用可选的尾部斜杠尝试此规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

答案 1 :(得分:1)

你几乎没错,你只需要排除斜杠:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.\/]+)$ $1.php [NC,L]