不知道为什么我的htaccess代码不起作用......任何解决方案?
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
我只想要网址w / o .html& .php,别无其他; p
答案 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]