使用Mod_rewrite将前缀添加到URL的末尾

时间:2014-08-17 11:45:08

标签: php apache .htaccess mod-rewrite

我正在努力制作一个简单的URL缩短器但是在Mod_Rewrite中有一些问题〜

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^hu/([^/]*)$ /?code=$1 [L,QSA]
RewriteCond %{HTTP_HOST} !^AgeofW\.us$ 
RewriteRule ^(.*)([^hu/])$ http://%{HTTP_HOST}/hu/$1 [R=301]

URL的构思是“AgeofW.us/hu/”,无论如何都在URL的末尾有一个Trailing / hu /。但是又一次。我m having some Issues with this. I试了最后一两个小时,我被迫在这里问!有人有想法吗?或者向我解释一下?我会记住它Lolz。

~~这会生成一个无限循环,生成:请求的URL / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu / hu /在此服务器上找不到。 〜一遍又一遍。

我有多次尝试和代码修正,并且尚未推出单一的可行解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine On

RewriteCond %{THE_REQUEST} !/hu/ [NC]
RewriteCond %{HTTP_HOST} AgeofW\.us$ [NC]
RewriteRule !^hu/ /hu%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^hu/([^/]*)/?$ /?code=$1 [L,QSA]
  1. 通常在重写规则之前保留重定向规则。
  2. [^hu/]不是正确的正则表达式,以匹配not hu/