Q2: почему этот код конфигурации не работает в .htaccess? - PullRequest
0 голосов
/ 27 мая 2009

Что я буду использовать вместо Document_Root в .htaccess ??

Ниже приведен мой htttp.conf на моем сервере Linux.

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule ^/(.*)(/?)$ /$1.php [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})(/?)$ /profile.php?fairid=$1$2 [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})/([a-z]*)(/?)$ /$3.php?fairid=$1$2 [L]

Но теперь я перенес свой домен на общий сервер. Итак, для правильной работы моего сайта, какие изменения понадобятся в .htaccess в правилах перезаписи?

Мой .htaccess выглядит следующим образом:

RewriteEngine On
RewriteBase /~laborfa2
RewriteCond %/~laborfa2/lf/main/com/%{REQUEST_FILENAME}.php -f
RewriteRule /(.*)(/?)$ /~laborfa2/lf/main/com/$1.php [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})(/?)$ /~laborfa2/lf/main/com/profile.php?fairid=$1$2 [L]

Но это не работает. Пожалуйста, предложите внести изменения в .htaccess.

1 Ответ

1 голос
/ 26 августа 2009

REQUEST_FILENAME уже является абсолютным путем к файловой системе, и добавление DOCUMENT_ROOT неверно.

Кроме того, при использовании mod_rewrite в файле .htaccess, Apache удаляет префикс пути к каталогу из запрошенного пути URI перед проверкой правил. А в случае файла .htaccess в корневом каталоге документов веб-сервера, это лидирующий символ /, который был удален. Поэтому ваш шаблон не должен начинаться с косой черты, как в конфигурации сервера или виртуального хоста.

Так попробуйте это:

RewriteBase /~laborfa2/
RewriteCond %{DOCUMENT_ROOT}~laborfa2/lf/main/com/$1.php -f
RewriteRule (.*)(/?)$ /lf/main/com/$1.php [L]
RewriteRule ^([a-zA-Z]+[a-zA-Z0-9_]{3,15})(/?)$ /lf/main/com/profile.php?fairid=$1 [L]
...