2014-11-20 3 views
2

У меня есть некоторые перезаписи, которые изменят имена файлов на структуры URL.Правила повторного использования или продолжения

http://example.com/landing-myfile.html будут преобразованы в http://example.com/landing/myfile/

Я пытаюсь установить страницу по умолчанию, сохранить URL, а затем переработать правила.

Таким образом, если пользователь вводит в http://example.com/asdfasdfasdf

он будет перенаправлять http://example.com/landing-mydefault.html

, но я хочу, чтобы показать, как http://example.com/landing/mydefault/

У меня есть переписывает работу для всех симпатичной URL, и у меня есть отсутствующие папки/файлы, перенаправляемые на страницу по умолчанию. Но тогда мне нужно продолжать переписывать все остальные правила.

Вот что у меня есть.

RewriteEngine On 
RewriteBase/

#redirects bad requests to a default. 
#works but leavings landing-mydefault.html in the address bar. 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /landing-mydefault.html [R,L] 

#process the pages and converts them to pretty urls. 
#everything below works as it should. 
RewriteCond %{THE_REQUEST} landing-([^.]+)\.html\s [NC] 
RewriteRule^/landing/%1/ [R=302,L,NE] 
RewriteCond %{THE_REQUEST} landing-([^.]+)\.html\?v=([^\s&]+) [NC] 
RewriteRule^/landing/%1/%2? [R=302,L,NE] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 
RewriteRule ^landing/([^/]+)/?$ /landing-$1.html [L] 
RewriteRule ^landing/([^/]+)/([^/]+)/?$ /landing-$1.html?v=$2 [L,QSA] 

ответ

2

правила Try в следующем порядке:

RewriteEngine On 
RewriteBase/

RewriteRule ^/?$ /landing/mydefault/ [R,L] 

#redirects bad requests to a default. 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^landing/ /landing/mydefault/ [R,L,NC] 

#process the pages and converts them to pretty urls. 
#everything below works as it should. 
RewriteCond %{THE_REQUEST} \s/+landing-([^.]+)\.html\?v=([^\s&]+) [NC] 
RewriteRule^/landing/%1/%2? [R=302,L,NE] 

RewriteCond %{THE_REQUEST} \s/+landing-([^.]+)\.html\s [NC] 
RewriteRule^/landing/%1/ [R=302,L,NE] 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^landing/([^/]+)/?$ landing-$1.html [L,NC] 

RewriteRule ^landing/([^/]+)/([^/]+)/?$ landing-$1.html?v=$2 [L,NC] 
+0

не кажется, независимо от того, что помещается в адресную строку, даже действительных файлов, возвращает веб-страницы не доступны ошибки. – gin93r

+0

Вы тот, кто помог мне написать красивые URL-адреса. [Вот ссылка] (http://stackoverflow.com/questions/26784082/htaccess-url-rewrite-with-and-without-query-string), если это помогает решить эту проблему. Благодарю. – gin93r

+0

Он оставит все, что было в адресной строке. – gin93r

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