使用Mod_rewrite在URL末尾添加前缀

最后发布: 2014-08-17 11:45:07


问题

我正在努力制作一个简单的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的末尾都带有尾随/ hu /。 但是再说一次。 m having some Issues with this. I m having some Issues with this. I已经尝试了最后一两个小时,但我不得不在这里提问! 有人有主意吗? 或向我解释? 我会记住它。

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

我有多次尝试和代码更正,但还没有提出一个可行的解决方案。

php apache .htaccess mod-rewrite
回答

您可以使用:

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/是不正确的正则表达式。