2012-03-13 26 views
0

我有一个相当标准的mod_rewrite,它与一个名为Modx的CMS打包在一起,FURL工作正常。mod_rewrite附加查询字符串 - 正确的语法

它将改写

这是如下配置。

# Friendly URLs Part 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} . 
# Force all pages to go to www.domain.co.uk for SEO 
RewriteCond %{HTTP_HOST} !^www\.domain\.co.uk [NC] 
RewriteRule (.*) http://www.domain.co.uk/dev/$1 [R=301,L] 
# Friendly URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ dev/index.php?q=$1 [L,QSA] 

现在我想添加一个附加条件,这将改写一个额外的查询字符串:

注* company_id *和* company_id *应为实际重写中的数字。

已经尝试了一些迭代,但仍然无法获得成功。

帮助赞赏!

回答

1
# Friendly URLs Part 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} . 

# Force all pages to go to www.domain.co.uk for SEO 
RewriteCond %{HTTP_HOST} !^www\.domain\.co.uk [NC] 
RewriteRule (.*) http://www.domain.co.uk/dev/$1 [R=301,L] 
#are your sure the above rule shouldn't be : 
#RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L] 

# Friendly URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ dev/index.php?q=$1 [L,QSA] 

#company url 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(company)/([^/]+)$ dev/index.php?q=$1&companyid=$2 [L,QSA] 
+0

Gerben - 感谢您的答案,但不幸的是它不/我不能让它继续工作。我已经复制了你的代码,但是当我通过php检查服务器变量时,它返回“REDIRECT_QUERY_STRING = q = company/*** id_here ***”,这对我来说意味着它没有翻译最终的“/ *** id_here ** *“为&companyid = *** id_here ***其中*** id_here ***显然是实际的整数ID - 任何建议非常感谢! – megaSteve4 2012-03-21 21:13:30

+0

REDIRECT_QUERY_STRING包含原始网址。 '$ _GET ['companyid']'应该包含这个id。 – Gerben 2012-03-22 17:32:09

+0

Gerben感谢您的帮助。使用$ _GET ['companyid']不起作用。我将“公司URL”块移动到“Friendly URL”块的上面,现在它可以工作,但最终的url就像domain.com/dev/company/?company_id=1我希望没有传统的查询字符串,因此domain.com/dev/company/1 - 我认为它触发了这两个规则,这就是为什么最后一个查询字符串重新出现,但我认为使用[L]强制这是最后一个规则运行 - 任何想法?谢谢 – megaSteve4 2012-04-28 18:05:27