如何通过使用`RewriteRule ^(。*)$?id = $ 1 [L,QSA]`来获取文件目录.htaccess?

时间:2011-01-16 08:47:25

标签: apache .htaccess directory mod-rewrite

如何使用RewriteRule ^(.*)$ ?id=$1 [L,QSA]

获取文件目录.htaccess

如果.htaccess位于http://localhost/some/dir/.htaccess并且我正在打开http://localhost/some/dir/here/I/use/RewriteRule/,那么我如何在不使用/some/dir/且无需手动添加RewriteBase的情况下检测到值%{DOCUMENT_ROOT}/some/dir/ ,就像价值localhost一样,我得到了%{HTTP_HOST}

2 个答案:

答案 0 :(得分:0)

如果你不使用RewriteBase,你需要在重写规则中告诉mod-rewrite真实的Directory Root / var / ww / mysite / some / dir。 RewriteBase将获取位置URL并将其映射到目录。

所以你可能会以

结束
 RewriteRule /var/ww/mysite/some/dir/(.*)$ ?id=$1 [L,QSA]

尝试映射一些内部变量可能是

 RewriteRule %{DOCUMENT_ROOT}/some/dir/(.*)$ ?id=$1 [L,QSA]

但是我不确定,我很少在.htaccess中使用mod_rewrite - 我更喜欢目录标签,文件路径管理在.htaccess中可以有所不同(自动删除和添加目录前缀) 。如果您找不到解决方案,请尝试询问Servfault,其他大量管理员。

答案 1 :(得分:0)

Actualy Apache仍然没有pathinfo($,PATHINFO_DIRNAME),功能就像PHP一样。

所以现在有使用%{REQUEST_URI}的解决方案,就像这个例子:

RewriteRule ^(.+)/$ /path-dirname/$1 [R=301,L]

可能会重置:

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^.+/$ %1 [R=301,L]