我试图配置我的htaccess有多种原因:
首先,我的视图页面位于以下路径:mywebsite.fr/views/contact-us.php(例如)。我希望访问/views中的文件,而不使用url和扩展名格式;如下:mywebsite.fr/联系我们
我写了这几行,效果很好:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# Retirer les extensions des pages et les rendre accessibles en lecture
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}' /([^' ]+)'.php
RewriteRule ^/?(.*)'.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
# WWW => domaine
RewriteCond %{HTTP_HOST} www.mywebsite.fr
RewriteRule (.*) http://mywebsite.fr$1 [L,R=301]
# Suppression d'un sous répertoire
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /views/$1 [QSA,L]
但当我试图打开一个不存在的页面时,我在页面错误500内部服务器错误中重定向,而不是我的404页面自定义。。。
这些错误页面位于以下路径中:mywebsite/views/errors/404.php
我在我的htaccess文件中写了这几行:
ErrorDocument 404 /views/errors/404
也许有人可以告诉我为什么页面404没有部署?感谢
除非/views/
中有一个htaccess文件,其中包含重写规则,否则此规则将导致重写循环:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /views/$1 [QSA,L]
如果转到/not-exist
,这两个条件将通过,URI将被重写为/views/not-exist
,重写引擎将循环。由于这也不存在,您的条件将再次通过,URI将被重写为/views/views/not-exist
等。
尝试:
RewriteCond %{DOCUMENT_ROOT}/views/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/views/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/views/$1.php -f
RewriteRule (.*) /views/$1 [QSA,L]
好的,我终于找到了解决方案:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# Retirer les extensions des pages et les rendres accessibles en lecture
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}' /([^' ]+)'.php
RewriteRule ^/?(.*)'.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
# Suppression d'un sous répertoire
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/views/$1.php -f
RewriteRule (.*) /views/$1 [QSA,L]
</IfModule>
对于我的自定义错误页面:
ErrorDocument 401 /views/errors/401.php
ErrorDocument 403 /views/errors/403.php
ErrorDocument 404 /views/errors/404.php
ErrorDocument 500 /views/errors/500.php
现在一切正常。