我对.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重定向?