.htaccess 使用htaccess重定向不存在的链接

.htaccess 使用htaccess重定向不存在的链接,.htaccess,redirect,url-rewriting,.htaccess,Redirect,Url Rewriting,我们有一个使用定制php构建的静态站点example.com。当我们键入example.com/asdadada时,它会重定向到自定义404页面。但当我们键入example.com/about-us/asdadada时,它将保持在相同的url上,即example.com/about-us/asdadada,并显示about-us页面的内容。在这种情况下,我们需要404或301重定向。我们在htaccess中使用了以下代码 <IfModule mod_rewrite.c> Rewrit

我们有一个使用定制php构建的静态站点example.com。当我们键入example.com/asdadada时,它会重定向到自定义404页面。但当我们键入example.com/about-us/asdadada时,它将保持在相同的url上,即example.com/about-us/asdadada,并显示about-us页面的内容。在这种情况下,我们需要404或301重定向。我们在htaccess中使用了以下代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]

RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

#get rid of trailing slashes
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

#redirect to https
RewriteCond %{HTTP_HOST} ^example\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteCond %{SERVER_PORT} 80 
#RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

ErrorDocument 404 /404.php

RewriteCond %{QUERY_STRING} view [NC]
RewriteRule .* https://example.com? [R=404,L]
</IfModule> 

重新启动发动机
重写基/
重写cond%{THE_REQUEST}^[A-Z]{3,}\s([^.]+)\.php[NC]
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{REQUEST_FILENAME}.php-f
重写规则^(.*)/?$$1.php[NC,L]
RewriteCond%{THE_REQUEST}^.*/index\.php
重写规则^(.*)index.php$/$1[R=301,L]
#摆脱拖尾斜杠
重写cond%{HTTP_HOST}^(www.)?示例\.com$[NC]
重写规则^(+)/$http://%{http_HOST}/$1[R=301,L]
#重定向到https
重写cond%{HTTP_HOST}^example\.com[NC,或]
重写cond%{HTTP_HOST}^www\.example\.com[NC]
重写cond%{SERVER_PORT}80
#重写规则^(.*)$https://www.example.com/$1[R,L]
重写规则^(.*)$https://www.example.com/$1[R=301,L]
ErrorDocument 404/404.php
重写cond%{QUERY_STRING}视图[NC]
重写规则。*https://example.com? [R=404,L]

那么
/关于我们
被改写成什么
/about us.php
/about us/index.php
?//你在这里做事情的顺序很少见,通常所有处理HTTPS重定向、www到非www或其他方式、尾部斜杠等的外部重写都应该放在第一位。所以
/about us
被重写为-什么
/about us.php
/about us/index.php
?//你在这里做事情的顺序是相当罕见的,通常所有处理诸如HTTPS重定向、www到非www或其他方式、尾部斜杠等的外部重写都应该放在第一位。