mod_rewrite, /index.php?p=test to / test - PullRequest
       13

mod_rewrite, /index.php?p=test to / test

1 голос
/ 11 октября 2010

Я пытаюсь установить очень простое правило в файле .htaccess, чтобы переписать этот вид URL: www.domain.com/index.php?page=test к этому: www.domain.com/test

Я новичок в mod_rewrite, и до сих пор я пришел к этому правилу

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule ^(.*)$ index.php?$1

но это не работает.

Любая помощь? Большое спасибо

Ответы [ 2 ]

3 голосов
/ 11 октября 2010

Почти верно, вы просто забыли page=:

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

Теперь обратите внимание, что это правило работает с точностью до наоборот: оно переписывает запросы путей типа /test внутри к /index.php?page=test и не наоборот.

0 голосов
/ 11 октября 2010

Другой подход:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^([a-zA-Z0-9-_]+)/?$ index.php?page=$1.php [NC,L]

Это также гарантирует, что ваш URL может содержать только буквы, цифры, тире и подчеркивания.

Хотя, в отношении sidenote, я бы порекомендовал вам иметь отдельные файлы для каждой страницы, включая header.php и footer.php в этих ...

...