2011-08-18 54 views
0

我在这个问题上,我想不通,我想使用mod_rewrite做到以下几点:mod_rewrite的URL

http://localhost/The+Beatles 

http://localhost/artist.php?a=The+Beatles 

我已经试过下面就到这里一些例子,其他网站和它tayloring我的需求,我想出了下面的,但它不工作:

RewriteEngine on 
RewriteRule ^(.*) artist.php?a=$1 

它似乎设置了一个变量,我似乎无法弄清楚artist.php?希望有人能帮忙。

戴夫

+0

这是什么不完全工作? – Phil

+0

这不是解决了我试过的网址RewriteRule ^([az]/+)/?$ artist.php?a = $ 1这将工作,如果它是一个单一的字符串我认为它有一个问题+话? – calabi

+0

(1)我最好说'重写规则^(。*)artist.php?a = $ 1 [L]'(2)'mod_rewrite'通常不容易从fist go正确设置,所以使用'RewriteLog/tmp/rewrite.log' +'RewriteLogLevel 2',看看发生了什么。 (3)如果这没有帮助,请告诉我们您是否将规则放在服务器配置或“.htaccess”中? –

回答

1

你可以试试这套规则(改编自香草Zend框架项目)

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [L] 
RewriteRule ^(.*)$ artist.php?a=$1 [L,QSA] 

这将改写为不存在的文件的请求,你artists.php脚本,而离开正常的请求图像,样式表,JavaScript等。

在您的artist.php脚本中,您只需通过$_GET['a']变量访问原始请求。

+0

以下嘿菲尔,试过这个,但我不能让它没有500 itnernal错误的工作,删除除了最后一行和[L,QSA]的一切,它的工作原理和显示我的页面,但它说$ _GET ['a'] = artist.php ??不知道这是怎么回事:(感谢您的时间 – calabi

+0

总是记录500错误。你的错误日志说什么? – Phil

+0

日志显示[Thu Aug 18 23:48:34 2011] [alert] [client localhost]/var/www/.htaccess:RewriteLog不允许在这里 – calabi