【问题标题】:htaccess Rewrite to same name file in different folders of sitehtaccess 重写到站点不同文件夹中的同名文件
【发布时间】:2012-09-30 11:10:21
【问题描述】:

我尝试了很多搜索但没有成功。我希望有人能真正帮助我解决这个问题。

好的,所以我的网站是这样的:

/rewrite.php
/folder1/rewrite.php
/folder2/rewrite.php
/folder1/subfolder1/rewrite.php
/folder1/subfolder2/rewrite.php

等等……

简而言之,每个文件夹(除了管理员访问文件夹)都有一个rewrite.php

所以基本上,我想重写到对应目录下的rewrite.php文件,但是我做不到。

那是

如果我要求

/News

那么它应该重写为:

/rewrite.php

如果我要求:

/folder1/News

那么它应该重写为:

/folder1/rewrite.php

其他文件夹依此类推。

目前,这是我的 htaccess 中的内容:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . rewrite.php [L,NC]

某处,我读到如果我删除 RewriteBase,那么它将使用当前目录作为 RewriteBase。但它失败了,没有奏效。

另外,我想将一些文件夹保留在异常中(应该禁用重写),例如:

/administration
/config

我希望有一个可行的解决方案,如果有人可以帮助我... :)

最好的问候,

安库尔·塔库尔

【问题讨论】:

    标签: apache .htaccess mod-rewrite rewrite


    【解决方案1】:

    试试:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/(administration|config|rewrite.php)
    RewriteRule ^(.*?)(/?[^/]+)$ $1/rewrite.php [L]
    

    【讨论】:

    • 太棒了!这正是我想做的......非常感谢...... :)
    • 好的。这在我的 Wamp localhost 上运行良好,但是当我尝试在 Web 服务器上运行这个 Live 时,它​​给了我一个问题。当我浏览我的网站并在根目录中打开一个 URL 时,例如 /news,它给了我 404: Not Found 在此服务器上找不到请求的 URL /rewrite.php。但是,当我在子文件夹中打开一个 URL 时,比如 /sub2/news,它会很好地打开它。所以我把 $1/rewrite.php 改成了 $1rewrite.php。然后,事情发生了逆转。它适用于 ROOT URL,但不适用于 /sub2/news。它将 REDIRECT_URL 显示为 **/sub2rewrite.php**(缺少斜杠)谢谢并请帮助。
    • @AnkurThakur 它正在做你想做的事。在您的问题中,您说当请求是/news 然后将其重写为/rewrite.php。在您的实时服务器案例中,/rewrite.php 似乎不存在。
    • 没关系...但是我做了一个小改动并让它工作;)将其更改为:(我想我将'/'设为可选)^(。*? )(/?)([^/]+)$ $1$2rewrite.php 非常感谢您的帮助... :)
    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2018-12-28
    • 1970-01-01
    • 2020-01-13
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多