Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess url重写规则将不存在的页面重定向到不应重定向到的页面_Php_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php .htaccess 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,这正是所需的 但是,有一个问题-如果主目录中的任何其他文件名拼写错误,那么浏览

我在.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
,这正是所需的

但是,有一个问题-如果主目录中的任何其他文件名拼写错误,那么浏览器将重定向到
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,没有数字,没有大写字母或其他破折号、圆点等。如果您感兴趣,请将其添加到问题中。