寻找有关htaccess的解决方案

时间:2014-02-12 22:39:59

标签: php html .htaccess

不知道为什么我的htaccess代码不起作用......任何解决方案?

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

我只想要网址w / o .html& .php,别无其他; p

3 个答案:

答案 0 :(得分:0)

请尝试这个

RewriteEngine On 
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ $1.html [NC,L]
RewriteRule ^(.*)$ $1.php [NC,L]

编辑:

在一个博客上我发现有些服务器需要

Options -MultiViews
在RewriteEngine On之前

。与我们的原始代码一起使用。

答案 1 :(得分:0)

默认Laravel * .htacces * s配置在大多数情况下都有效。除非您进行了一些更改,特定于您的服务器。

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

答案 2 :(得分:0)

重写条件仅适用于紧随其后的规则,这意味着您拥有的第二条规则没有任何条件,并将盲目地重写所有内容以包含.php结束,甚至是最后已经有.php的文件。重写引擎也循环,因此第一个规则是否匹配无关紧要。生成的URI将继续将所有规则应用于它,直到它停止更改为止,在您的情况下永远不会。因此无论如何都会出现500错误。

请改为尝试:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*)$ $1.html [L]