PHP RewriteRule检测url是否包含“string”并替换

时间:2013-04-12 21:31:58

标签: .htaccess mod-rewrite redirect

这可能是关于RewriteRule的一个基本问题,但我只是不能让它发挥作用。

我想要做的是检测网址:

mydomain/myapp/id/some/random/url.html?param=somethingThatIdoUse
mydomain/myapp/id/other/randomabc/perrito.php?param=somethingThatIdoUse
... 

我需要丢弃的部分来自/id/[all this]?param=somethingIdoUse并且如果可能则使用param或者将完整的url作为参数发送,以便我可以使用正则表达式来获取参数。

并且有一条规则检测/id/存在并重定向到:

mydomain/myapp/other/manageRequest.php?params=somethingThatIdoUse 

(params我可以得到整个url并将其作为字符串剥离是没有问题的)

同样,应用程序有不同的模块,如:

mydomain/myapp/moduleOne/index.php 
mydomain/myapp/moduleTwo/index.php 

这必须保持同样的工作。

到目前为止,我尝试过其中一些像:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET /.*;.* HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://localhostdev/app/index.php %{REQUEST_URI}? [R=301,L]


RewriteEngine On
RewriteBase /spt/
RewriteCond %{REQUEST_FILENAME} !^id$ [NC]
RewriteRule ^(.*)$ index.php [R=301,L]

RewriteEngine On
RewriteCond %{REQUEST_URI} !/campaings/response\.php$
RewriteRule ^/something/(.*) /other/manageRequest.php? [L]

但没有任何东西可以做我需要的东西。

感谢您的建议

2 个答案:

答案 0 :(得分:2)

  

MYDOMAIN / MyApp的/ ID /一些/无规/ url.html?PARAM = somethingThatIdoUse

以下是使用上述网址的示例:

RewriteRule ^id/some/random/url.html/?  /myapp/other/manageRequest.php [L,NC] 

查询将不变地传递给替换URL

答案 1 :(得分:1)

实际上最终真正成为基础:

RewriteRule ^.*id.*$ handleRequest.php [NC,L]

我确实得到了他们被发送的参数!