htaccess重定向中发送的值错误

时间:2012-05-31 08:56:55

标签: php apache .htaccess codeigniter mod-rewrite

人们,我遇到了htaccess的问题。 我使用codeigniter作为框架。 我目前使用的代码是:

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9_-]+)\.example\.(.*+) [NC]
RewriteCond %{REQUEST_URI} /index([0-9]+) [NC]
RewriteRule .* /index.php/main_controller/method/%1 [QSA,L]

现在我想做的是将%1作为值发送到我的'main_controller'控制器的名为'method'的方法。问题:不是发送进来的值([a-zA-Z0-9 _-] +),而是发送进来的那个([0-9] +),如果我发送%2,应该是这种情况....我想发送进来的值([a-zA-Z0-9 _-] +), 比方说,例如,如果网址是

  

somevalue.example.com/index33

它正在发送33而不是somevalue

2 个答案:

答案 0 :(得分:1)

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} /index([0-9]+) [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.(.*+) [NC]
RewriteRule .* /index.php/main_controller/method/%1 [QSA,L]

答案 1 :(得分:1)

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.(.*+) [NC]
RewriteRule /index([0-9]+) /index.php/main_controller/method/%1/$1 [QSA,L]

所以,愚蠢的我。要从URI中获取变量,您不必将其置于REQUEST_URI,只需将其设为重写规则,RewrideCond中的变量在%1中获得,而([0-9] +)中的变量来自RewriteRule / index([0 -9] +)获得1美元。希望它也能帮助别人