2010-01-12 139 views
0

我一直在试图添加一个mod_rewrite到一个网站,但它只有勉强工作。mod_rewrite友好的网址

这个URL, “http://domain.com/folder/server/subfolder/index.php” 应该被改写为 “http://domain.com/folder/subfolder/index.php?platform=server

这是最后的版本,我心中已经试过至今。

RewriteEngine On 
RewriteCond %{REQUEST_URI} !(css|images|scripts|js|files) 
RewriteRule ^([A-Za-z0-9]+).*/(.*)$ $2?platform=$1& [L] 

规则应适用于每一个URL,阉没有子文件夹,只需1〜5 什么我不能做的是使重写规则做的东西一样的index.php /服务器/参数2 /参数3因为我将不得不重写所有的代码才能兼容。

任何帮助将不胜感激。

回答

1

试试这个规则:

RewriteRule ^([^/]+)/([^/]+)/(.+) $1/$2?platform=$2 [L] 

编辑如果你想使用的规则在文档根目录下的子目录下,有以下路径段任意数量的,请尝试以下规则:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/(.+) $2?platform=$1 [L,QSA] 
+0

我想他只想要一个黑名单('(css | images | scripts | js | files)'),不应该被转发 – 2010-01-12 20:26:34

+0

我想阻止图像,css,sc ripts等通过这条规则。 而上面的RewriteRule并不完全工作,它总是期望:server/subfolder/file.php 我需要它期望0或更多的子文件夹,所以server/file.php或服务器/子文件夹/子文件夹/文件。 PHP。 原因我有像server/cms/cms.php和server/index.php的URL。 – Thul 2010-01-13 08:40:50

+0

对上述重写规则进行了小调整: RewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^([^ /] +)/(。*)$ 2?platform = $ 1 [L,QSA] – Thul 2010-01-14 15:04:08