.htaccess内部重定向不适用于子文件夹

时间:2012-10-05 09:08:12

标签: php .htaccess mod-rewrite

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

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

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

我对mod_rewrite没有多少经验。

2 个答案:

答案 0 :(得分:3)

父目录RewriteBase中的

应为/

RewriteEngine On
RewriteBase /

在子目录中,RewriteBase应为/uk

RewriteEngine On
RewriteBase /uk

答案 1 :(得分:0)

你也可以在具体的重定向中指定具体路径,它不像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]标志声明结束 你最好准确说出你需要什么,因为你的重定向可能不充分,可能根本不起作用