如何使用RewriteRule ^(.*)$ ?id=$1 [L,QSA]
?
如果.htaccess位于http://localhost/some/dir/.htaccess
并且我正在打开http://localhost/some/dir/here/I/use/RewriteRule/
,那么我如何在不使用/some/dir/
且无需手动添加RewriteBase
的情况下检测到值%{DOCUMENT_ROOT}/some/dir/
,就像价值localhost
一样,我得到了%{HTTP_HOST}
?
答案 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]