Php .htaccess url重写规则将不存在的页面重定向到不应重定向到的页面
我在.thaccess中有一个URL重写规则,它完全符合我的要求:Php .htaccess url重写规则将不存在的页面重定向到不应重定向到的页面,php,.htaccess,mod-rewrite,redirect,Php,.htaccess,Mod Rewrite,Redirect,我在.thaccess中有一个URL重写规则,它完全符合我的要求: RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)$ /page.php?id=$1 [L] 因此,对www.site.com/page.php?id=one的请求被重定向到以下位置:www.site.com/one,这正是所需的 但是,有一个问题-如果主目录中的任何其他文件名拼写错误,那么浏览
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /page.php?id=$1 [L]
因此,对www.site.com/page.php?id=one
的请求被重定向到以下位置:www.site.com/one
,这正是所需的
但是,有一个问题-如果主目录中的任何其他文件名拼写错误,那么浏览器将重定向到www.site.com/page.php?id=
因此,例如,如果www.site.com/other.php
的名称与www.site.com/otherr.php
之类的名称拼写错误,则.htaccess规则生效,用户看到的URL是www.site.com/otherr.php
,而显示的内容是page.php
您知道需要更改重写规则中的哪些内容来解决此问题吗?请处理page.php中不存在的内容,否则,如果您不希望按照规则重定向所有不存在的文件或文件夹,则必须列出需要重定向的每一个页面。@Prix,这实际上就是我现在正在做的事情——对
page.php
的任何不存在的请求都被重定向到no\u record\u found.php
。但是,我想更改规则,以便将otherr.php
直接重定向到no_record\u found.php
,而不是先重定向到page.php
,然后再重定向到no_record\u found.php
。然后您必须为每个(或一个可以容纳所有人的)创建一个规则您希望重定向的有效URL中的一个,而不是使用上述规则,然后您可以使用的解决方案是在page.php中重定向404以查找错误id。但您也可以通过改进.htaccess中的正则表达式来减少问题。例如,如果您没有超过10个字符或少于3个字符的id,没有数字,没有大写字母或其他破折号、圆点等。如果您感兴趣,请将其添加到问题中。