我正在尝试编写一个htaccess文件,但我无法让它正常工作。我的网站上有一个名为'gpio'的目录。我正在编写的htaccess文件位于/ var / www / gpio中。
当有人请求网址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 ='。最终的结果是,当我看到一个代表一类帖子的页面时,我正在看到我的主页。
任何关于我做错事的想法都会受到赞赏。
答案 0 :(得分: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