http.conf重定向example.com/foo/bar到example.com/foo?id=bar

时间:2011-09-10 21:50:28

标签: .htaccess mod-rewrite redirect httpd.conf

我正在尝试创建一个动态页面,其内容由传递给它的变量确定,但我希望网址很好。基本上我想在目录/ foo中有一个索引文件来处理任何条形码。 example.com/foo/bar到example.com/foo?id=bar

我已经在httpd.conf文件中尝试了所有我能想到的东西。我最近的尝试是:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/foo/([a-z-]*) /foo/index.php?id=$1 [QSA,L]

但是当我尝试加载example.com/foo/bar时,加载的页面是example.com

非常感谢任何帮助!

编辑:我访问example.com/foo/bar时仍在加载example.com/index.php也许我的其他规则之一是干扰?

AllowOverride none
Options +FollowSymLinks
RewriteEngine on

RewriteRule ^(.*)\.html$ http://www.example.com/$1.php [R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/foo/([a-z-]*)(\/?)$ /foo/index.php?id=$1 [NC,QSA,L]

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^/?(.*) http://www.example.com/$1 [L,R,NE]

.html到.php,我想要实现的目标,以及example.com到www.example.com。

1 个答案:

答案 0 :(得分:5)

我在httpd.conf中使用它

<VirtualHost *:80>
    DocumentRoot "/var/www/"
    ServerName www.domain.com   
    ServerAlias www.domain.com
    <Directory /var/www/>
        #other directives
    </Directory>    
    <Directory /var/www/foo/>   
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteRule ^([a-z]+)(\/?)$ index.php?id=$1 [NC,QSA,L]
    </Directory>
</VirtualHost>