.htaccess使用DocumentRoot子域重写规则

时间:2014-02-08 23:28:46

标签: apache .htaccess mod-rewrite url-rewriting

我正在尝试实现一些htaccess重写规则。然而,在htaccess中不是专业人士。

我有一个子域网关(如:.htaccess and rewrite sub domains

中所述

现在我想使用SEO友好的URL。网关有一些子文件夹,在这种情况下是电子邮件。

http://gateway.example.com/email/Param1/Param2/

此网址应重写为http://gateway.example.com/email/index.php?hash=Param1&hash2=Param2

在电子邮件文件夹中,我创建了一个.htaccess文件,其中包含以下内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^/(.*)/(.*)/ index.php?hash=$1&hash2=$2

请求http://gateway.example.com/email/Param1/Param2/我现在收到404.规则有什么问题?

2 个答案:

答案 0 :(得分:1)

你应该这样做

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/]*)/([^/]*)/ /email/index.php?hash=$1&hash2=$2 [L]

答案 1 :(得分:0)

你可以试试这个。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^/([^/]*)/([^/]*)/ index.php?hash=$1&hash2=$2

*你需要配置apache(httpd)以接受UrlRewrite,方法是将AllowOverride从non更改为all,如下所示:

<Directory "/var/www/html">
 Options Indexes FollowSymLinks
 AllowOverride all
 Order allow,deny
 Allow from all
</Directory>