我刚刚设置了一个新的开发环境,因为我无法访问我网站上的任何主页页面。
例如,如果我访问:www.herpandderp.com/contact_us,则会抛出404错误。
没有名为/ contact_us的目录,我在index.php中有代码,它将URL作为参数处理,接受并根据需要包含/要求相应的代码。
这是我根目录中的条目.htaccess:
RewriteRule ^([^.]+)$ /index.php?url=$1 [L,QSA]
如果我做一个phpinfo,我在apache2handler下得到以下内容(所以我知道安装了mod_rewrite):
已加载模块核心prefork http_core mod_so mod_auth_basic mod_auth_digest mod_authn_file mod_authn_alias mod_authn_anon mod_authn_dbm mod_authn_default mod_authz_host mod_authz_user mod_authz_owner mod_authz_groupfile mod_authz_dbm mod_authz_default mod_log_config mod_logio mod_env mod_mime_magic mod_expires mod_deflate mod_headers mod_usertrack mod_setenvif mod_mime mod_status mod_autoindex mod_info mod_vhost_alias mod_negotiation mod_dir mod_actions mod_speling mod_userdir mod_alias mod_rewrite mod_cache mod_disk_cache mod_file_cache mod_mem_cache mod_perl mod_php5 mod_ssl
有什么理由,如果我去/ contact_us我不通过index.php?我在剧本的第1行有一个骰子而且没有击中它。但是,当我执行www.herpandderp.com/?url=contact时 工作。
我觉得这是一个apache配置问题,因为代码可以在其他环境中运行。
答案 0 :(得分:1)
确保在httpd.conf中,相关网站的AllowOverride全部设置,否则重写将无法覆盖该网站的默认设置。
答案 1 :(得分:0)
在.htaccess
添加第一行:
RewriteEngine On
有效吗?