2011-12-26 2 views
0

Вот вся моя .htaccess:.htaccess: Как выполняются слэши (/) в RewriteRule?

RewriteEngine On 
RewriteBase /~user/sitetest/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?)/?$ view.php?id=$1 

Когда я достигаю http://localhost/~user/sitetest/abc123, она загружает значение $ _GET [ "ID"] и все работает отлично. Это великолепно!

Но я хотел, чтобы работать на http://localhost/~user/sitetest/view/abc123 (уведомление "Вид /")

Так что я попытался заменить RewriteRule с:

RewriteRule ^view/(.+?)/?$ view.php?id=$1 

Но без толку! Кажется, он не загружает $ _GET [] из view.php. Я даже пытался вторя из [] к значению $ _GET, но он показывает, как пустой, когда доступ http://localhost/~user/sitetest/view/abc123

Так я редактировал его, чтобы увидеть, если это будет работать:

RewriteRule ^view-(.+?)/?$ view.php?id=$1 

И это происходит, когда я достигаю http://localhost/~user/sitetest/view-abc123 (обратите внимание на «-» вместо «/»)

Значит, это как-то связано с косой чертой? Я потерян и изо всех сил пытался понять это.

EDIT:

я все еще возникают проблемы, но я заметил, когда я попробовал:

RewriteRule ^test/(.+)/?$ view.php?id=$1 

И доступ http://localhost/~user/sitetest/test/abc123 это сработало! Таким образом, существует конфликт с «view.php» и «view /» .. так что в худшем случае я переименую view.php. Но я все равно хотел бы выяснить, что именно происходит неправильно.

ответ

1

view в запрошенных URL-адресах с файлом view.php, если включен MultiViews.

Отключено с Options -MultiViews в вашем htaccess.

0

Я думаю, что это, где вы используете (.+?) - попробуйте использовать только (.+)

+0

Только что сделал это, и, к сожалению, это не сработало. – Aaron

+0

Ahh, извините. Я не вижу в этом ничего плохого. –

+0

Я отредактировал мой главный пост. Может, это может спровоцировать идею? – Aaron

-1

вы можете слеш после точки зрения, как этот взгляд /, но я не уверен, если это решит проблему, как слэш разделитель пути , Так что я думаю, что вы пытаетесь достичь будет лучше делать с некоторым правилом, как это:

RewriteRule ^(.+\/)(.+\/)$ page.php?p=$1&id=$2 

, а затем включить вашу страницу из page.php с простой PHP включают в себя ($ _ GET [ «р»]);

+1

a '/' не является зарезервированным символом в RegEx! – Gerben

+0

Согласитесь :) Извините за это ... в любом случае, я не думаю, что часть пути может быть успешно передана как переменная с регулярным выражением в mod_rewrite, не так ли? –