幻影目录混淆了mod_rewrite?

时间:2015-03-17 19:23:31

标签: apache .htaccess mod-rewrite url-rewriting

首先,我遇到与this相同的问题(Cliff的注释:如果请求的URI是真实目录,mod_rewrite附加一个查询字符串)。

那里接受的解决方案(将“DirectorySlash Off”添加到.htaccess)对我不起作用。这不是我所挂断的,只是在它表明有任何密切关系的情况下我才会提起它。

经过一番思考后,我认为拥有可导航的重写链接“看起来像”对真实目录的引用可能并不好,所以我决定重命名相关目录。现在,mod_rewrite仍然会处理以前目录名称的请求,就好像它们一样。

所以,总结一下:

  • [domain] / foo曾经存在但不再存在
  • mod_rewrite将“[domain] / foo”的请求重写为“[domain] / foo /?p = foo”
  • [domain] / bar从未存在
  • '[domain] / bar'的请求按预期处理

相关目录的.htaccess:

Options +FollowSymLinks -MultiViews
DirectorySlash Off
RewriteEngine On
RewriteBase /sitedir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?p=$1 [NC,QSA,L]

通过注释/取消注释从重写文件中排除目录的条件的实验没有产生任何变化。

感觉它正在引用缓存的目录结构,但Googling向我保证Apache没有缓存。我错过了什么?

0 个答案:

没有答案