2013-03-06 6 views
0

Я настраиваю службу сокращения URL для своей организации. Я хочу переписывает укороченных URL-адресов в мой файл index.php, но перенаправить запросов к корню на мой основной сайт, а именно:mod_rewrite перенаправить корневой каталог, переписать подкаталог

Запроса: short.domain.tld/а
Пользователь видит: короток. domain.tld/а
страницы подает: short.domain.tld/index.php код = а

запроса: short.domain.tld/
Пользователь видит: website.domain.tld
страницы служила up: website.domain.tld (на моем сайте)

Мой файл .htaccess в настоящее время:

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule ^/(.*)$ index.php?code=$1 [L] 
RewriteRule ^.*$ http://website.domain.tld/ 

Я уверен, как провести различие между запросами на подкаталоги и запросов на корне домена.

ответ

1

Вы можете попробовать это в файл .htaccess в корневом каталоге:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} short\.domain\.tld [NC] 
RewriteCond %{REQUEST_URI} !index\.php  [NC] 
RewriteRule ^([^/]+)/? /index.php?code=$1 [NC,L] 

RewriteCond %{HTTP_HOST} short\.domain\.tld [NC] 
RewriteCond %{REQUEST_URI} ^/$  
RewriteRule .* http://website.domain.tld [R=301,L] 

Карты внутренне

http://short.domain.tld/abc с или без пробелов (отображается в адресной строке)

Для

http://short.domain.tld/index.php?code=abc

Если строка abc считается динамической.


Или перенаправляет постоянно

http://short.domain.tld/ без пути сегмента

To:

http://website.domain.tld/ (отображается в адресной строке)

+0

Спасибо! Я считаю, что я неправильно использовал регулярное выражение для коротких кодов. Я немного изменил ваши правила - удалил директиву RewriteBase и удалил директивы% {HTTP_HOST} - все по-прежнему работает. Еще раз спасибо. – Pickle

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