Как получить каталог файлов через .htaccess с помощью `RewriteRule ^ (. *) $? Id = $ 1 [L, QSA]`? - PullRequest
3 голосов
/ 16 января 2011

Как получить каталог файлов через .htaccess с помощью 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}

Ответы [ 2 ]

0 голосов
/ 23 января 2011

На самом деле Apache все еще не имеет pathinfo($,PATHINFO_DIRNAME), функция, как и PHP.

Итак, теперь есть решение по использованию %{REQUEST_URI}, как в следующем примере:

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

может быть сброшено с помощью:

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^.+/$ %1 [R=301,L]
0 голосов
/ 16 января 2011

Если вы не используете RewriteBase, вам нужно указать mod-rewrite реальный каталог 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]

Но я не уверен, я редко использую mod_rewrite в .htaccess - я предпочитаю теги Directory , а управление пути к файлу может отличаться в .htaccess (автоматическое удаление и добавление префиксов каталога). Если вы не нашли решения, попробуйте спросить Servfault , там есть множество других администраторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...