2010-08-11 4 views
0

Это должно быть просто, но я не могу понять это. У меня есть это очень простое правило mod_rewrite, и он просто не хочет работать. Это все содержимое файла .htaccess.Почему этот простой RewriteRule не работает?

RewriteEngine On 
RewriteRule ^([A-Za-z0-9-_/\.]+)/?$ index.php?page=$1 [L] 

Если я вызываю URL-адрес domain.com/foo, он должен переписать его на index.php? Page = foo. Но вместо этого он переписывает его на index.php? Page = index.php. Я пытался несколько URL-адресов:

  • index.php страница = Foo
  • index.php
  • /Foo
  • /

Во всех случаях PHP действует как если бы «страница 'установлен в значение "index.php". Это не ошибка в index.php, потому что я заменил все содержимое index.php скриптом, который просто повторил значение «страницы», и он все еще появляется как index.php.

Действительно потеряно, где я ошибаюсь, любая помощь была бы потрясающей!

Благодаря

Адриан

ответ

2

Любая причина, вы не можете использовать что-нибудь попроще, например:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

Если вы пытаетесь сохранить существующие страницы из переписывается, то (if file does not exist и if directory does not exist, то re-write)

+0

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

0

Я думаю, что это то, что ищете. К сожалению, это не очень хорошо работает, если URL имеет другие аргументы GET (IE,/some/url/path? Page = 1).

RewriteEngine On 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

Лучшая идея.

RewriteEngine On 
RewriteRule ^(.*)$ index.php [L,QSA] 

Флаг QSA перешлем ГЭТ Params, а затем в index.php использования $_SERVER['REQUEST_URI'] и parse_url направить запрос.

От http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html:

'qsappend|QSA' (query string append) 
This flag forces the rewriting engine to append a query string part 
in the substitution string to the existing one instead of replacing it. 
Use this when you want to add more data to the query string via a rewrite rule. 
+0

В настоящее время я не буду иметь многократные le получить аргументы, мне просто нужно это работать сейчас. Я пробовал то, что вы мне дали, и он все равно дает тот же результат. –

Смежные вопросы