Чистый URL htaccess - PullRequest
       2

Чистый URL htaccess

1 голос
/ 14 января 2012

Как мне переписать http://localhost/index.php?page=sample в http://localhost/page/sample.

Единственный код в моем htaccess - это правило для удаления index.php из URL.

RewriteCond %{THE_REQUEST} \ /(.+/)?index\.(html?|php)(\?.*)?\  [NC]
RewriteRule ^(.+/)?index\.(html?|php)$ ./$1 [R=301,L]
RewriteRule ^([^/]*)/$ ./index.php?page=$1  [QSA,L]

Я ищу переписать часть с параметром. Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Нет необходимости взламывать, чтобы удалить "index.php" с помощью RewriteRules.В вашем vhost, или в каталоге по каталогу (или, может быть, .htaccess файл, который я не знаю), если вы добавили правило вроде:

DirectoryIndex index.html index.php

Тогда оно должно работать прямо из коробки.

Поэтому я сделаю так, как будто ваше правило не существует, потому что оно бесполезно (если вы не покажете мне, почему).

Вы хотите, чтобы пользователь печатал в браузере:http://localhost/page/sample и внутренне на стороне сервера изменено на: http://localhost/index.php?page=sample.

Это должно работать:

# if it's neither a file nor a directory:
RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule /([^/]+)/([^/]+)$ /index.php?$1=$2 [QSA,L]

Две подсказки:

Есливы находитесь не в размещенной среде (= если это ваш собственный сервер и вы можете изменять виртуальные хосты, а не только файлы .htaccess), попробуйте использовать директиву RewriteLog: она поможет вам отследить такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)

2 голосов
/ 14 января 2012

Правило бы так:

RewriteRule ^page/([a-zA-Z0-9]+) index.php?page=$1 [L,NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...