我尝试配置我的htacess有多种原因:
首先,我在此路径中有我的观看页面: mywebsite.fr/views/contact-us.php (例如)。我想访问 / views 中的文件,而不是在网址中,也没有扩展格式;像这样: mywebsite.fr/contact-us
我写了这句话并且工作得非常好:
<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?感谢的
答案 0 :(得分:0)
除非/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]
答案 1 :(得分:0)
好的,我终于找到了解决方案:
<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
现在所有人都正确地工作。