2012-07-21 57 views
0

如何重写进来的请求以使其全部小写?我环顾四周,一些答案是使用重写模块,但这些不是针对使用反向代理的特定情况。在Apache服务器上强制使用反向代理服务器的小写URL

我想是一个针对于这样的请求:

http://mywebsite/SomeApPlIcAtIon

转换为这样的:

http://mywebsite/someapplication/

有什么建议?

UPDATE:

我有它设置什么我以为应该是正确的,我的httpd.conf看起来是这样的:

servername localhost 
RewriteEngine on 
RewriteLog "/var/log/apache2/rewrite.log" 
RewriteLogLevel 9 
RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

我的反向代理是在一个文件中的设置conf.d称为sabnzbd.conf这样:

ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *> 
    Order allow,deny 
    Allow from all 
</Proxy> 
ProxyPass /sabnzbd/ http://192.168.21.21:9999/sabnzbd/ 
ProxyPassReverse /sabnzbd http://192.168.21.21:9999/sabnzbd/ 

在我启用的网站,我的000-defailt我都AllowOverride设置为All

当我去192.168.21.21/sabnzbd/它工作得很好。

当我转到192.168.21.21/SABNZBD/时,我得到了404。重写规则不起作用。

当我去我的重写日志文件检查出来,没有数据。

什么问题?

+0

为什么客户端不发送正确的url? – qrtt1 2012-07-21 16:02:55

+0

看到这个答案:http://webmasters.stackexchange.com/a/18740 – complex857 2012-07-21 16:04:08

回答

0

假设你在Ubuntu上使用Apache服务器 - 你可以使用mod_rewrite模块。

你可以关注这个博客(URL:http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/),它描述了配置模块的步骤。

+0

什么我不确定,是重写规则应该去的地方。我目前没有使用.htaccess文件。它应该在httpd.conf中进行吗? – 2012-07-21 16:18:34

+0

从技术上讲,它将以任何方式工作 - .htaccess文件只适用于放置它的文件夹和子文件夹。建议将规则放入httpd.conf文件中。除非需要.htaccess文件不应该被使用 - 它有性能以及安全问题。你可以参考Apache的官方文档。 – 2012-07-21 16:23:31

相关问题