2011-03-10 146 views
0

我有这样的htaccess.htaccess的URL重写帮助


RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !^www\.test\.com$ [NC] 
RewriteRule ^(.*)$ http://www.test.com/$1 [R=301,L] 



RewriteRule ^home.html$ index__.php [L] 
RewriteRule ^prodotti.html$ prodotti.php [L] 
RewriteRule ^azienda.html$ azienda.php [L] 
RewriteRule ^news.html$ news.php [L] 
RewriteRule ^outlet.html$ outlet.php [L] 
RewriteRule ^contatti.html$ contatti.php [L] 

RewriteRule ^news-(.*).html$ news.php?id=$1 [L] 

RewriteRule ^arr.html$ prodotti-cat.php?cat=a [L] 
RewriteRule ^sed.html$ prodotti-cat.php?cat=s [L] 
RewriteRule ^par.html$ prodotti-cat.php?cat=p [L] 
RewriteRule ^cont.html$ prodotti-cat.php?cat=c [L] 
RewriteRule ^comp.html$ prodotti-cat.php?cat=co [L] 

RewriteRule ^outlet/([a-zA-Z0-9_-]+).html$ outlet-dett.php?prd=$1 [L] 

RewriteRule ^(.*)/(.*)/$ prodotti-cat.php?cat=$1&f=$2 [L] 
RewriteRule ^(.*)/(.*).html$ prodotti-dett.php?cat=$1&prd=$2 [L] 

如果我写在我的浏览器http://www.test.it/outlet/test-2.html我得到NOT FOUND ... 为什么??? 帮助!!!如果该文件存在

+0

什么是你重写的地址例子?请澄清你打算从哪些数据中获得。 Thks – 2011-03-10 14:33:52

+1

RewriteRule^outlet /([a-zA-Z0-9 _-] +)。html $ outlet-dett.php?prd = $ 1 [L] – Ste 2011-03-10 14:35:04

回答

0

http://www.test.it/outlet/test-2.html将被转换为

http://www.test.it/outlet-dett.php?prd=test-2 

检查。

任何事情后,包括字符?被称为查询字符串,所以这是怎么一回事呢:

  • 服务器负载outlet-dett.php
  • ,并将它与价值test-2命名为prd变量。
  • 然后outlet-dett.php中的PHP脚本显示的数据取决于prd的值。

在你重写规则的$1称为恢复参照。它引用RegEx中第一个括号之间的匹配。

+0

@Ste我们在讨论**非常相同的文件** 。我用结果编辑了我的答案。 – vbence 2011-03-10 14:45:23

+0

对不起,我有那个文件...但仍然没有找到错误... – Ste 2011-03-10 14:46:29

+0

你可以在你的目录或http://www.test.it/outlet-dett没有名为'outlet-dett.php'的文件。 php?prd = test-2'应该给你一个答案。 - 第三个解决方案是你的PHP脚本以404(未找到)回复,因为它在你的数据库中没有名为'test-2'的产品。 – vbence 2011-03-10 14:50:21