【问题标题】:.htaccess internal redirect not working for subfolder.htaccess 内部重定向不适用于子文件夹
【发布时间】:2012-10-05 09:08:12
【问题描述】:

我有一个站点,它的子文件夹中有另一个站点。例如,www.domain.com 和子文件夹将是 www.domain.com/uk/。它们都包含重复文件,因此即使.htaccess 文件也是相同的。现在的问题是,当我通过uk 子文件夹中的.htaccess 将用户重定向到同一目录中的文件时,它会将用户重定向到具有重复名称的父站点中的文件。

这是我在 .htaccess 文件中使用的规则:

RewriteRule ^category/[a-zA-Z0-9_-]+/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ final_final.php 

我对 mod_rewrite 没有太多经验。

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    在父目录中RewriteBase应该是/

    RewriteEngine On
    RewriteBase /
    

    在子目录中RewriteBase 应该是/uk

    RewriteEngine On
    RewriteBase /uk
    

    【讨论】:

    • 我已经尝试将重写基础设置为 /uk 但它不起作用
    • 仍然重定向到父目录文件
    • 如何修复?它不是一个实际的页面
    • 您能准确地发布您的.htaccess 文件吗?只是相关的脚本。
    • 但是如果我将用户重定向到这个路径 www.domain.com/uk/category/watever follos 这个,那么服务器应该将他们重定向到 www.domain.com/uk/filename.php
    【解决方案2】:

    您也可以在具体重定向中指定具体路径,它不像 Gustonez 方式那样“干净”,但它也可以工作

    在 uk-htaccess 中重定向到 uk 基目录

    RewriteRule ^category/(.*)$ /uk/$1 [L,R]
    

    并且在 parent-htaccess 中重定向到没有 /uk/ 的基本目录

    RewriteRule ^category/(.*)$ /$1 [L,R]
    


    但我认为你的重定向很奇怪

    ^category/[a-zA-Z0-9_-]+/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ final_final.php
    

    你真的需要 url 中的所有这些参数来重定向吗?
    并且当您重定向时,这些参数中的任何一个都将在页面上进行解析
    您只是进入 final_final.php 页面而不向该页面发送参数
    另一件事是您没有 [L] 标记语句结束
    您最好准确说明您需要什么,因为您拥有的这种重定向可能不够充分,而且可能根本不起作用

    【讨论】:

    • 感谢您的建议,我已根据您的建议修改了我的 .htaccess,现在可以使用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2017-09-08
    相关资源
    最近更新 更多