Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Apache 如何使用mod_rewrite忽略URL的结尾?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 如何使用mod_rewrite忽略URL的结尾?

Apache 如何使用mod_rewrite忽略URL的结尾?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我希望我的网站结构如下: domain.com/person/edit/1 domain.com/person/edit/2 domain.com/person/edit/3 etc. 我有一个页面,所有这些请求都应该转到该页面: domain.com/person/edit.html 加载页面时,JavaScript将查看url的尾部,因此我希望服务器在内部忽略它 我有一条重写规则: RewriteRule ^person/view/(.*)$ person/view.html [L]

我希望我的网站结构如下:

domain.com/person/edit/1
domain.com/person/edit/2
domain.com/person/edit/3
etc.
我有一个页面,所有这些请求都应该转到该页面:

domain.com/person/edit.html
加载页面时,JavaScript将查看url的尾部,因此我希望服务器在内部忽略它

我有一条重写规则:

RewriteRule ^person/view/(.*)$ person/view.html [L]
我确信我遗漏了一些明显的东西,但当我访问上面的一页时,我得到了404信息:

The requested URL /person/view.html/1 was not found on this server.
据我所知,[L]意味着如果这个规则适用,Apache应该停止重写并提供备用页面。相反,它似乎是在尽可能早的时间应用规则,然后将其余不匹配的url附加到重新编写的url上

如何使这些重写正常工作?

“据我所知,[L]意味着如果此规则适用,Apache应停止重写并提供备用页面。”

[L]
标志告诉Apache停止检查其他规则。。然后再重写到下一个迭代。。它再次检查所有规则(这就是它的工作原理)

尝试以下“配方”(将其放在.htaccess的顶部):


另一个尝试的想法是:将
DPI
标志添加到您的
[L]
[L,DPI]



如果
选项
无效,则应重写规则。但这完全取决于Apache的配置。如果上述方法无效,请发布您的整个.htaccess(更新您的问题)。

太棒了!我禁用了多视图,它似乎可以工作。“多视图”选项扫描目录中类似命名的文件,对吗?所以我的服务器在没有先检查.htaccess文件的情况下找到了edit.html文件并重写到该文件?感谢您的帮助。
DPI的+1。我遇到了一些只有
DPI
才能解决的问题。
Options +FollowSymLinks -MultiViews

# activate rewrite engine
RewriteEngine On

# Do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]