【发布时间】:2014-07-14 21:41:27
【问题描述】:
我无计可施,Stack Overflowers。尝试做我认为是一个简单的重写规则,用波浪号替换 URL 中的斜杠,然后在末尾添加一个“.html”。 所以我的 .htaccess 是这样的:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.+)/(.+)$ $1~$2 [N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)$ $1.html [L]
基本上,我正在运行一个重复的规则,每次用波浪线替换所有斜线,然后我的最终规则添加“.html”——因为我们所有的网络文件都需要在一个文件夹中(客户端请求——愚蠢,我知道)。
我在这里测试了“第一部分/第二部分/第三部分”模式:http://martinmelin.se/rewrite-rule-tester/,它只有在我砍掉初始斜线并删除重写条件时才有效(这没有意义 b/ c 我放在那里的文件名不应该存在于该服务器上),但在我的本地服务器上并非如此。
它最终应该读取文件“part-one~part-two~part-three.html”,但是当我查看本地机器上的 Apache 错误日志时,我得到了:
文件不存在:/path/to/website/part-one
所以它基本上切断了最后两部分,从不尝试添加“.html”——那么到底发生了什么?请帮忙,mod_rewrite 大师!!
【问题讨论】:
标签: regex apache .htaccess mod-rewrite