1

我正在尝试编写一个 htaccess 文件,但无法使其正常工作。我的网站上有一个名为“gpio”的目录。我正在编写的 htaccess 文件位于 /var/www/gpio 中。

当有人请求 URL http://domain.com/gpio时,我希望将请求重定向到脚本,并将“gpio”附加到查询字符串中。这是我的 htaccess 文件中的内容:

# .htaccess
#DirectoryIndex index.html
RewriteEngine on

# I changed domain name a few months ago...
RewriteCond %{HTTP_HOST} ^olddomain.com/*$
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]

# handle the case where the directory exists
RewriteCond %{REQUEST_FILENAME} -d
# this is the part that doesn't work
RewriteRule ^(.*)$ /cgi-bin/pyindex.cgi?q=$1 [L,QSA]

# handle the case where a file is requested
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /cgi-bin/pyindex.cgi?q=$1 [L,QSA]

问题是当我访问这个 URL 时,我被重定向到脚本,但请求的路径没有附加到查询字符串中。在 pyindex.cgi 中,打印查询字符串时,它只包含 'q='。最终结果是,当我应该看到代表一类帖子的页面时,我看到了我的主页。

任何关于我做错了什么的想法都将不胜感激。

4

1 回答 1

1

要么在里面有这个规则,要么把它/var/www/.htaccess修改为

RewriteRule ^$ /cgi-bin/pyindex.cgi?q=gpio [L,QSA]
RewriteRule ^(.+)/?$ /cgi-bin/pyindex.cgi?q=gpio/$1 [L,QSA]

并且,以下规则测试请求是否不是文件(因此也会匹配目录)

RewriteCond %{REQUEST_FILENAME} !-f  # remove ! to match files
于 2013-08-17T14:27:45.607 回答