mod_rewrite для удаления строки запроса и замены именами папок - PullRequest
1 голос
/ 17 января 2012

Так что у меня уже есть некоторые изменения, но на самом деле я их не писал :( Мне бы хотелось понять их, а не просто попросить о помощи. Но я ничего о них не знаю и не чувствую, чтоуспеваю часами учиться: (

В любом случае я бы хотел превратить

http://wouldyourathers.co.uk/?qid=1231

в:

http://wouldyourathers.co.uk/question/1231

Для меня qid довольно уродлив.я мог бы легко изменить это на? вопрос, но я все еще чувствую, что это не красиво.

Единственная проблема в том, что у меня уже есть перезаписи на месте:

RewriteCond %{REQUEST_URI} !dispatch\.php$
RewriteCond /var/www/wyr/docroot%{REQUEST_FILENAME} !-f
RewriteRule ^(/.*)$ /dispatch.php?url=$1 [L,QSA]
RewriteRule ^x\.!dispatch\.php([^b]+)!dispatch\.php$ !dispatch\.php [L,NE]

Это будет направлять любой запрос от моего серверана мой dispatch.php и здесь я в основном возиться с URL, чтобы отобразить их сексуально. Но я в тупик, как я могу редактировать запрос. Оказавшись внутри файла отправки, я могу отредактировать это и сделать кодмне нужно выполнить вызовы данных.

Спасибо (даже если это дольше, чем нужно)

Ответы [ 2 ]

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

Перед вашими другими правилами, вы можете попробовать добавить это:

RewriteRule ^/question/([0-9]+)$ /?qid=$1 [L,QSA]
0 голосов
/ 17 января 2012

Прямо сейчас, без каких-либо изменений в ваших правилах, когда вы переходите на http://wouldyourathers.co.uk/question/1231, вы должны иметь /question/1231 в $_GET['url'] в dispatch.php скрипте.

Вы можете проанализировать этот URL с помощью PHP и восстановить идентификатор вашего вопроса:

$parts = explode('/', $_GET['url');
if ($parts[1] == 'question') {
    $question_id = $parts[2];
    // you could even do $_GET['qid'] = $parts[2];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...