2013-07-30 4 views
-1

Я хотел бы перенаправить все неизвестные адреса, например, как это:Как перенаправить все длинные URL-адреса на их более короткие версии?

http://www.website.com/title/.../... 

нравится это:

http://www.website.com/title 

Я попробовал .htaccess файл, который выглядит так, но это не похоже на работу :

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} ^(.*)/.*$ 
RewriteRule ^.*/(.*)$ /$1 [R=301] 

Что мне не хватает?

+0

Это не очень понятно, что вы пытаетесь сделать на всех. Что означает «называть все дольше» * означает? Какие URL-адреса вы хотите видеть в браузере против того, какие URL-адреса действительно указывают на нужные ресурсы? –

+0

У меня много длинных URL-адресов, созданных CMS, индексированных поисковыми системами. Я бы перенаправил все эти длинные URL-адреса на стандартную короткую версию url, которую я использую. – user2635661

ответ

0

Учитывая, что вы хотите первый титул, это должно работать:

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/.*$ /$1 [R=301,L] 

Для index.php:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/index\.php [NC] 
RewriteRule^/%1 [R=302,L] 
+0

Спасибо, что он работает именно в этом. Только – user2635661

+0

Спасибо, это замечательно! он работает точно, мне нужно 99%. Только http: //www.website.com/index.php/.../... не перенаправляется на http://www.website.com/index.php. Я не знаю, почему, я попытаюсь изучить другие правила в моем .htaccess. – user2635661

+0

Поскольку index.php является допустимым файлом, а 'RewriteCond% {REQUEST_FILENAME}! -f' предотвратит перенаправление действительных файлов, для этого вам потребуется другое правило. – Prix