2010-09-13 3 views
0

У меня есть два вопроса относительно RewriteRule, но они оба связаны друг с другом, поэтому я надеюсь, что все в порядке. Я спрашиваю их обоих в одном сообщении.RewriteRule переименовать URL?

Первое, что я хотел бы лишить отставая index.html «S от конца любого URL, например:

http://www.example.com/index.html -> http://www.example.com/ 

Второе, чтобы отобразить URL http://www.example.com/contact/ в адресной строке браузера для всех следующие URL-адрес:

http://www.example.com/contact/ 
http://www.example.com/contact/index.html 
http://www.example.com/contact/success.html 
http://www.example.com/contact/failure.html 

Например, если пользователь перенаправляется на http://www.example.com/contact/success.html Я хотел бы, что страница будет отображаться для них, но с http://www.example.com/contact/ как URL. Это возможно?

ответ

1

Для индекса:

RewriteRule ^(.*)/index.html /$1/ [R] 

Второй:

RewriteRule ^contact/(success|failure)\.html /contact/ [L] 
+0

Спасибо; первый работает, но успеха/неудачи нет - он перенаправляет все 4 URL-адреса на '/ contact /', пока показывая исходный URL-адрес. Мне бы хотелось, напротив, показать страницу «contact/success.html», но показывать URL-адрес «/ contact /» только в URL-адресе. – Rezzie

+0

Ах, тогда я вас неправильно понял. Я думаю, что последний бит невозможен, хотя, если вы переименуете url на just/contact /, как сайт узнает, должен ли он показывать страницу успеха или неудачи? –

+0

Я надеялся, что это послужит тому, будет ли форма, которую они только что отправили, успешной или неудачной, пока маскирует URL-адрес, поэтому, если они нажмут обновление, они снова увидят форму контакта, если они захотят повторно отправить. – Rezzie

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