试图得到

www.example.com

直接转到

www.example.com/store

我已经尝试了多个代码位,但没有工作。

我的尝试:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

我做错了什么?


当前回答

我搜索了一下,得到了这些结果:

RewriteEngine在RewriteBase上 / RewriteRule ^index.(.*)?$ http://domain.com/subfolder/ (r = 301) 这将使任何尝试转向 访问一个名为index的文件。的东西 您的子文件夹,是否文件 存在与否。

或者试试这个:

RewriteCond % {HTTP_HOST} 样品! ^ www。com美元(NC) RewriteRule ^(*)美元。 % {HTTP_HOST} - samlse / 1 (R = 301美元,L]

我没有在.htaccess文件中做很多重定向,所以我不确定这是否会工作。

其他回答

你可以使用一个重写规则,使用^$来表示根目录,并将其重写到你的/store目录,如下所示:

RewriteEngine On
RewriteRule ^$ /store [L]

我发现为了避免循环重定向,重要的是将重定向的范围限制在根目录。 我会用:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]

我们也可以使用Redirect来实现这个目的

Redirect 301 / www.example.com/store

或用于映射的别名

Alias / /store

编辑:mod_alias只适用于httpd.conf。

参考资料

http://httpd.apache.org/docs/2.2/mod/mod_alias.html https://httpd.apache.org/docs/trunk/rewrite/avoid.html

我认为你发布的代码的主要问题是:

第一行在严格以sample.com开头的主机上匹配,因此www.sample.com不匹配。 第二行至少需要一个字符,然后是www.sample.com,它也不匹配(为什么要转义第一个w?) 所包含的规则都没有重定向到您在目标中指定的url(另外,sample被拼错为samle,但这无关紧要)。

作为参考,以下是您当前拥有的代码:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^sample.com$
RewriteRule (.*) http://www.sample.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\www.sample\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

这是我用来重定向到子目录的。这是无形的,但仍然允许通过匹配现有文件或其他文件的请求。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]

用你的值替换site.com和subdir。