2015-05-09 86 views
1

我需要在/ test/v1 /文件夹中将localhost/test/v1/rates等所有url重定向到api.php,并在/ test/v1 /文件夹中调用localhost/test/v2/rates给api.php。 v2 /文件夹(MAMP服务器)本地主机上的htaccess mod_rewrite

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /test/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ./v1/(.*)$ /test/v1/api.php?request=$1 [QSA,NC,L] 
</IfModule> 

之前的代码不起作用。我刚刚用尽了几乎所有的可能性。

请寄给我正确的方向。

+0

记住RewriteRule'的'第一个参数是一个正则表达式。 '。/ something'作为正则表达式没有任何意义。找出你正在匹配的是什么。在'.htaccess'上下文中,'.htaccess'文件所在的文件夹将从您匹配的url中删除。该网址永远不会以'/'开头。 – Sumurai8

回答

-1

如果您使用的是RewriteBase /test/,则必须将该目录添加到规则中,如 RewriteRule ^/test/index\.php$ - [L]

请勿使用./作为入口点。

+0

列出'.htaccess'。在'.htaccess'文件中'RewriteRule'的第一个参数是从未用'/'开头的url进行测试,因为'.htaccess'文件夹被作为前缀删除,然后重新添加。 – Sumurai8

0

试试这个

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /test/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^v1/(.*)/?$ /test/v1/api.php?request=$1 [QSA,NC,L] 

RewriteRule ^v2/(.*)/?$ /test/v2/api.php?request=$1 [QSA,NC,L] 
</IfModule> 


</IfModule> 
+1

非常感谢你的作品 –