2010-08-05 3 views
0

Я посмотрел на другие вопросы mod_rewrite и не смог найти ответ, поэтому, если бы кто-нибудь указал мне на тот, который я могу дублировать, я был бы признателен.Как я могу заставить mod_rewrite работать?

В любом случае, мой вопрос: почему мой мод не переработал? Я следовал за 3 учебными пособиями и проводил время, читая форумы и предыдущие вопросы на этом сайте, и не мог заставить их работать. Ive пытался делать это через мой файл vhosts.conf (я думаю, что его также известный как httpd.conf на некоторых установках Linux) и через .htaccess

Вот мой .htaccess подал код

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 

RewriteBase/

RewriteRule ^/article/([0-9]+)$ article.php?art_id=$1 [NC,L] 

Вот ссылка im, пытающаяся работать: mysite.com/article?art_id=$1

Чтобы быть честным, я имею лишь небольшую подсказку о том, как работает mod_rewrite.

У меня установлен mod_rewrite (я не управляю сервером, но у компании, в которой я работаю, также есть услуги хостинга, то есть, как у меня есть доступ к vhosts.conf, но я не установил сервер, и насколько это возможно как я знаю, парень делает это про и установить его право)

Я положил это в, чтобы увидеть, если я могу заставить его работать, и это перенаправлены меня на мою домашнюю страницу (я думаю, что означает его работу)

# Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^fakepage\.html$ http://yoursite.com/ [R,L] 
+0

, что ваш целевой «видимый» URL, и где она должна быть переведена в («скрытый» URL)? – pixeline

+0

Я хочу, чтобы URL-адрес отображался следующим образом: http://mysite.com/article/123 , если фактический URL был http://mysite.com/article?art_id=123 – Latency

ответ

1

По крайней мере, насколько ваш файл .htaccess идет, использование правила, которое у вас не будет работать, потому что вход в RewriteRule никогда не будет e начальная косая черта на нем. Правило должно вместо выглядеть следующим образом:

RewriteRule ^article/([0-9]+)$ article.php?art_id=$1 [NC,L] 

Однако то, что у вас есть должно было сработать, когда вы пытались его в виртуальном хосте (если вы перезагрузили сервер), так что я не уверен, если это актуальная проблема. Каким образом переписывание не работает? Вы получаете 404 ошибки вместо перенаправления на файл, который вы ожидали?

+0

Должно быть, я что-то испортил, когда у меня это было в моем vhosts.conf и не заметил, но URL был сломан, поэтому он не работал, пока я не удалил эту косую черту – Latency

0

Timcorrect about the slash в начале вашего RewriteRule.

При попытке выяснить, переписывает, это может быть полезно включить logging:

RewriteLog "/var/www/mysite.com/rewrite.log" 
RewriteLogLevel 9 
Смежные вопросы