1

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

如何将所有呼叫重定向http://localhost/myproduct/abchttp://localhost/myproduct/extensions/abc

例如:如果请求的 URL 是http://localhost/myproduct/abc/pqr.php,它应该被重定向到http://localhost/myproduct/extensions/abc/pqr.php

基本上我想要可以放在 /myproduct 文件夹中的 .htaccess 代码,如果有人请求这样的 URL http://localhost/myproduct/abc/pqr.php,它将查找 /abc/ 的出现并将其替换为 /extensions/abc/ 我们无法将 /myproduct/abc/ 替换为 /myproduct /extensions/abc/ 因为 myproduct 可以对 yourproduct 或 myproduct1 等进行白标。

任何帮助将不胜感激。:)

4

3 回答 3

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

要保留第一个 URL 显示在浏览器的地址栏中,请R=301[R=301,L]

笔记:

  1. 如果只myproduct/需要文件夹,如下所示:http://localhost/myproduct/abc/AnyFileName.php该规则也可以使用。

  2. 例如,如果 file 存在于传入 URL 中的文件夹AnyFileName.phpabc中则将跳过该规则(无论如何都没有意义)。该脚本必须位于替代 URL:中的文件夹abc中。pqr.phphttp://localhost/Any/Number/Of/Folders/extensions/abc/

于 2013-01-24T15:31:33.877 回答
0

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

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

于 2013-01-24T09:39:02.517 回答
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]
于 2013-01-25T09:57:24.967 回答