我在服务器上设置了mod_rewrite来重写一个类似下面的URL
http://www.example.com/1
到
http://www.example.com/index.php?show=1
用词来缩短网址。当系统在我的开发网站上的子域下运行时,一切正常,但现在它只会生成Not Found
错误,但如果我手动输入网址/index.php?show=1
,它可以正常工作。
所以唯一的变化是从
切换的网址 http://www.site.example.com
到
http://www.site.com
public_html
内的同一服务器和同一子文件夹上运行,只是新域名已被指向该文件夹。
它存储的文件夹是/public_html/paste
目录中运行的完整.htaccess文件是
# Set Default File
DirectoryIndex index.php
# Turn ReWrite Engine On
RewriteEngine on
# Create Rule To Write URLs To Shorter Versions
RewriteRule /([a-z0-9]+) /index.php?show=$1
我无法启用RewriteLog,因为托管由于某种原因不允许它。
答案 0 :(得分:2)
听起来没有为该文件夹正确设置AllowOverride
指令。在Apache配置中,您应确保用于主域的目录或Vhost的AllowOverride
设置为All
http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
答案 1 :(得分:1)
您可能需要指定RewriteBase指令。
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
我还会注意到Options +FollowSymlinks
在那里也很好,以防你在配置链中进一步关闭它(如果没有它,重写就不会工作)。