2012-01-17 2 views
1

Итак, у меня уже есть некоторые перезаписи на месте, но на самом деле я их не писал :(Я бы хотел их понять, а не просто просить о помощи. я ничего не знаю о них, и я не чувствую, что есть время тратить время на изучение :(mod_rewrite, чтобы удалить строку запроса и заменить на имена «folder»

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

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, чтобы отобразить их в сексуальный способ. Но я в тупике, как я могу редактировать запрос. Внутри файла диспетчеризации я могу отредактировать это и сделать код, который мне нужен для выполнения вызовов данных.

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

+0

возможно дубликат [Простой RewriteRule не работает должным образом] (http://stackoverflow.com/questions/8509446/simple- RewriteRule-не-рабочий, как-то, должно быть) – mario

ответ

1

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

RewriteRule ^/question/([0-9]+)$ /?qid=$1 [L,QSA] 
0

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

Вы можете разобрать, что URL-адрес с PHP и восстановить свой вопрос ID:

$parts = explode('/', $_GET['url'); 
if ($parts[1] == 'question') { 
    $question_id = $parts[2]; 
    // you could even do $_GET['qid'] = $parts[2]; 
}