我想像这样构建我的网站:
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应停止重写并提供备用页面。相反,似乎是在尽可能早的时候应用规则,然后将剩余的不匹配网址附加到重写的网址上。
如何让这些重写正常工作?
答案 0 :(得分:3)
“据我所知,[L]表示如果适用此规则,Apache应停止重写并提供备用页面。”
嗯.. [L]
标志告诉Apache停止检查其他规则..并重写进入下一次迭代..再次检查所有规则(这就是它的工作方式)。
尝试这些“食谱”(把它放在.htaccess的顶部):
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]
尝试的另一个想法 - 向DPI
添加[L]
标记:[L,DPI]
如果Options
无效,则应重写规则。但这一切都取决于你的Apache的配置。如果以上不起作用 - 请发布您的整个.htaccess(更新您的问题)。