mod_rewrite重定向根目录,重写子目录

时间:2013-03-06 23:05:30

标签: mod-rewrite

我正在为我的组织设置网址缩短服务。我想重写缩短的网址到我的index.php文件,但是重定向请求到我的主网站的根目录,即:

请求:short.domain.tld / abc
用户看到:short.domain.tld / abc
提供的页面:short.domain.tld / index.php?code = abc

请求:short.domain.tld /
用户看到:website.domain.tld
提供的页面:website.domain.tld(在我的网站服务器上)

我的.htaccess文件目前是:

Options +FollowSymLinks 
RewriteEngine on

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

我不确定如何区分子目录请求和域根请求。

1 个答案:

答案 0 :(得分: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/没有分段路径

要:

http://website.domain.tld/(显示在地址栏中)