.htaccess规则冲突

时间:2019-10-29 09:44:02

标签: .htaccess friendly-url errordocument

我对.htaccess不太熟悉,但是我的.htaccess文件中包含以下内容:

RewriteEngine On 
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^centurion/programme-(.*).php$ ./centurion/programme.php?cid=$1
RewriteRule ^klerksdorp/programme-(.*).php$ ./klerksdorp/programme.php?cid=$1
RewriteRule ^tygervalley/programme-(.*).php$ ./tygervalley/programme.php?cid=$1
RewriteRule ^rustenburg/programme-(.*).php$ ./rustenburg/programme.php?cid=$1
RewriteRule ^witbank/programme-(.*).php$ ./witbank/programme.php?cid=$1

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

上面的代码通过将url更改为对动态页面更具描述性的内容,并删除了“静态”页面的.php范围,从而使url变得“友好”。

这一切都完美。但是现在我也需要重定向错误/文件未找到的页面。我尝试添加以下内容(带有相对路径和绝对路径):

ErrorDocument 404 /index.php

但是,当我在浏览器中输入错误的url时,仍然出现“找不到文件”错误(不是重定向的页面)。

当我添加以下内容时,所有页面都重定向到index.php页面:

RewriteRule ^.*$ /index.php [L] 

当我的.htaccess文件中只有以下代码时,错误的url会按预期方式重定向。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ /index.php [L] 

但是,显然,我的“友好” URL规则中没有一个起作用。

如何同时使用“友好的” URL规则和不正确的URL重定向?

0 个答案:

没有答案