.htaccess - 从子目录重定向到非现有文件的根目录

时间:2012-09-26 18:43:25

标签: .htaccess redirect

当前目录结构:

wwwpublic
|+ spanish(language)
|-- index.php
|-- contact.php
|
|- index.php
|- aboutus.php
|- products.php
|- contact.php

在wwwpublic目录的根目录中,我有英文文件。由于网站也有西班牙语,我创建了名为“spanish”的单独目录。两个目录中的页面名称完全相同。

现在,西班牙语目录中的某些页面不存在,我需要将请求重定向到这些页面到根文件夹并保留所请求文件的名称。

实施例: 访问者转到西班牙语版本,在那里打开index.php,然后他点击西班牙语目录中的aboutus.php页面(不存在),然后.htaccess将他重定向到/root/aboutus.php

1 个答案:

答案 0 :(得分:1)

wwwpublic目录中尝试这样的操作,最好在您有任何路由规则之前:

RewriteEngine On

# conditions to check that current request doesn't point to a valid resource
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# condition to check that request is for the /spanish/ directory
RewriteCond %{REQUEST_URI} ^/spanish/(.+)$

# conditions to check if the /spanish/ is removed whether it would point to a valid resource
RewriteCond %{DOCUMENT_ROOT}/%1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1 -d

# all conditions match, rewrite
RewriteRule ^/?spanish/(.+)$ /$1 [L]