1

好吧,我再说一遍标题中所说的话,我找不到一种方法来重写我所有的网址而不会出现循环。我尝试了很多选项,但找不到一种避免重定向循环的方法:

RewriteRule ^/(.+)  http://example.com/example/index.php$1  [R,L]                                                                                                                         
RewriteRule ^/?(.*) /var/www/example/index.php$1 [R]                                                                                                                              
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/example/index.php$1 [R]  
RewriteRule ^$ /example/ [L]

下面是我的目录 apache-conf

<Directory /var/www/example>
  Options FollowSymLinks
  DirectoryIndex index.php
  Order allow,deny
  Allow from all
</Directory>

我理解为什么它会循环,尽管我无法想象(要么找到!)做我想做的事的好规则。

编辑

基本上,我将 OVH 托管的 example.fr 重定向到 IP 虚拟机。这会涉及我的问题吗?

干杯

4

2 回答 2

3
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/example/
  RewriteRule (.*) /example/index.php/$1 [L,R]

这会将 /example/ 之外的任何内容重定向到 /example/index.php,最后添加原始路径

编辑:因此,如果您希望将所有内容重定向到,则需要在项目名称和项目名称/project_name/index.php中交换单词“ example ” ...RewriteCondRewriteRule

PS:RewriteCond需要这里的行来确保重写不会循环(因此,/example/contact当您尝试此操作时,url 会保留)。

于 2012-06-20T11:12:43.250 回答
1

此规则不应导致循环

RewriteRule ^/(.+)  http://example.com/example/index.php$1  [R,L]

这条规则根本不会做任何事情

RewriteRule ^/?(.*) /var/www/example/index.php$1 [R]

对于此规则,您应该添加 RewriteCond

RewriteCond %{REQUEST_URI} !^/example/
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/example/index.php$1 [R]

这可以

RewriteRule ^$ /example/ [L]
于 2012-06-20T11:15:42.403 回答