使用htaccess修改URL的一部分

时间:2013-01-24 09:36:51

标签: .htaccess redirect

我已将我的abc文件夹从 / myproduct / abc 目录移至我服务器上的 / myproduct / extensions / abc

如何将对http://localhost/myproduct/abc的所有来电重定向到http://localhost/myproduct/extensions/abc

例如:如果请求的网址为http://localhost/myproduct/abc/pqr.php,则应将其重定向到http://localhost/myproduct/extensions/abc/pqr.php

基本上我想要.htaccess代码可以放在/ myproduct文件夹中,如果有人请求像http://localhost/myproduct/abc/pqr.php这样的网址,那么它会查找/ abc /的出现,并用/ extensions / abc /替换它 我们无法替换/ myproduct / abc / by / myproduct / extensions / abc /,因为myproduct可能会对您的产品或myproduct1等进行白色标记。

任何帮助都将受到高度赞赏。 :)

3 个答案:

答案 0 :(得分:2)

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.*)/abc/([^\.]+)\.php/? [NC]
RewriteRule .*   %1/extensions/abc/%2.php  [R=301,L]

重定向

http://localhost/Any/Number/Of/Folders/abc/AnyFileName.php

要:

http://localhost/Any/Number/Of/Folders/extensions/abc/AnyFileName.php

要在浏览器的地址栏中显示第一个网址,请从R=301

中删除[R=301,L]

备注:

  1. 如果只需要文件夹myproduct/,请执行以下操作:http://localhost/myproduct/abc/AnyFileName.php该规则也适用。

  2. 如果文件AnyFileName.php,例如pqr.php存在于传入网址的 abc 文件夹中,则会跳过该规则(没有理由拥有它无论如何)。该脚本必须位于替换网址中的文件夹 abc http://localhost/Any/Number/Of/Folders/extensions/abc/

答案 1 :(得分:0)

您使用的是哪台服务器?如果您使用的是Apache 2,请查看mod_rewrite。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

答案 2 :(得分:0)

维杰,

试试这个:

RewriteEngine On
RewriteBase /

# REQUEST_FILENAME should not be file name
RewriteCond %{REQUEST_FILENAME} !-f

# REQUEST_FILENAME should not be directory name
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} /(.*)/abc/(.*)/? [NC]
RewriteRule .*   %1/extensions/abc/%2  [R=301,L]