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]