我想用RewriteCond制作一个带有RewriteCond的htaccess RewriteRule
到目前为止我所拥有的:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(sql.site.ro)$
RewriteRule ^(.*)$ ro-site-sql/index.php?x=$1
我希望发送到sql.site.ro的所有请求都从/ro-site-sql
目录提供。
因此,如果URI为sql.site.ro/index.php
,则服务器将转到/ro-site-sql/index.php
,或者如果URI为sql.site.ro/images/small/9954.png
,则服务器将转到/ro-site-sql/images/small/9954.png
。
问题是,如果我做
RewriteCond %{HTTP_HOST} ^(sql.site.ro)$
RewriteRule ^(.*)$ ro-site-sql/$1
我收到内部服务器错误,如果我发出
RewriteCond %{HTTP_HOST} ^(sql.site.ro)$
RewriteRule ^(.*)$ ro-site-sql/index.php?x=$1
我在Array ( [x] => ro-site-sql/index.php )
内得到/ro-site-sql/index.php
。如果不是index.php
而不是ro-site-sql/
部分吗?
谢谢!
答案 0 :(得分:0)
重写引擎循环遍历.htaccess文件,直到不再发生替换。您需要确保在第一次更换后此循环停止。有多种方法可以做到这一点。也许最容易理解的是:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(sql.site.ro)$
RewriteCond $1 !index.php$
RewriteRule ^(.*)$ ro-site-sql/index.php?x=$1 [L,QSA]
添加[L]标志,因为这是此循环的最后一条规则,如果您有时还有其他参数,则添加[QSA]。
答案 1 :(得分:0)
RewriteCond %{HTTP_HOST} ^sql.site.ro$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 ^(\w+/)+\w+\.\w+$
RewriteRule ^(.*)$ ro-site-sql/$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^sql.site.ro$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(\w+/)+\w+\.\w+$
RewriteRule ^(.*)$ ro-site-sql/index.php?x=$1 [L,QSA]
这应该用于识别实际文件并访问它们并将其他任何内容传递给index.php。