Php htaccess url重写无法使用配置设置

Php htaccess url重写无法使用配置设置,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我在一台运行XAMPP的win8机器上。我用.htaccess文件设置了一个虚拟主机目录。我一直在研究如何重写URL,并找到了“重写引擎”模块。在我的httpd.conf apache文件中,模块已启用: LoadModule rewrite_module modules/mod_rewrite.so 下一步似乎是更新我的.htaccess文件,如下所示: php_value register_globals off DirectoryIndex default.php index.php E

我在一台运行XAMPP的win8机器上。我用.htaccess文件设置了一个虚拟主机目录。我一直在研究如何重写URL,并找到了“重写引擎”模块。在我的httpd.conf apache文件中,模块已启用:

LoadModule rewrite_module modules/mod_rewrite.so
下一步似乎是更新我的.htaccess文件,如下所示:

php_value register_globals off
DirectoryIndex default.php index.php
ErrorDocument 404 /filenotfound.html

RewriteEngine On
RewriteBase /
RewriteRule ^Home$ Default.php [L]
RewriteRule ^AboutMe$ About.php [L]
RewriteRule ^Work$ Work.php [L]
RewriteRule ^Blog//Categories$ Blog/Categories.php [L]
RewriteRule ^Blog//([^/.]+)/?$ Blog/Posts.php?val=$1 [L]
我已经回答了几个如此多的问题(和),但即使是最简单的重写也无法奏效。我重新启动了apache好几次,都没有结果

在这里,这是我的文件夹结构,可以归结为所有相关内容:

root
.htaccess
Blog
   AuthorPanel.php
   Categories.php
   Post.php
   Posts.php
Default.php
About.php
Work.php
这些是我希望实现的重写(我已经尝试了其中的大部分):

更新1在httpd-vhosts.conf中,我甚至尝试打开重写引擎并重写规则,但也没有成功:

<VirtualHost *>
  DocumentRoot "C:/Users/ben/Documents/PHP/benWIT"
  ServerName benWIT.local
  <Directory "C:/Users/ben/Documents/PHP/benWIT">
    RewriteEngine on
    Order allow,deny
    AllowOverride all
    Allow from all
    Require all granted
    RewriteRule ^Home$ Default.php [L]
    RewriteRule ^AboutMe$ About.php [L]
    RewriteRule ^Work$ Work.php [L]
  </Directory>
</VirtualHost>

DocumentRoot“C:/Users/ben/Documents/PHP/benWIT”
服务器名benWIT.local
重新启动发动机
命令允许,拒绝
允许超越所有
通融
要求所有授权
重写规则^Home$Default.php[L]
重写规则^AboutMe$About.php[L]
重写规则^Work$Work.php[L]

由于您使用的是htaccess,因此需要确保在httpd.conf文件中将AllowOverride设置为All:

AllowOverride All
这将允许您使用htaccess文件。话虽如此,一般来说,如果您可以访问apache配置文件,您不希望使用htaccess文件或启用AllowOverride,因为它将使用更多资源来搜索目录和查找htaccess文件等。将更改放在httpd.conf文件或conf.d/example_host.conf中会更好

另一个注意事项是,mod_rewrite被过度使用,在大多数情况下都是过度使用。我建议您改用mod_别名(请参阅)。我应该指出,这只能在服务器配置或虚拟主机中使用,因此它不能在htaccess文件中工作。但如果你能在两者之间做出选择,就应该优先考虑

Alias /home /default.php
Alias /aboutme /about.php
Alias /work /work.php
AliasMatch /blog//([^/.]+)/? /blog/posts.php?val=$1
。。等等

以下是关于何时不使用mod_rewrite的详细说明:

我将使用共享托管环境,因此我不确定是否可以访问任何apache配置文件。现在,我在vhosts中设置了一个虚拟主机,在我的httpd.conf中,我将允许所有虚拟主机。我在别名链接中也没有看到设置这些别名的位置。感谢您的帮助,您可以将别名链接放入htaccess文件中。由于您使用的是共享主机,因此没有解决方法,您必须使用htaccess。只需确保加载了mod_别名。在将任何别名规则添加到.htaccess文件时,我还会收到服务器错误“500”。LoadModule mod_alias.so也加载到httpd.conf中。我还尝试删除vhost和httpd文件中的RewriteEngine。我应该在httpd文件中有我的虚拟主机目录吗?查看apache错误日志时,我看到多个错误:“site_directory/.htaccess:Alias not allowed here”是的,它应该位于服务器配置或虚拟主机中。
Alias /home /default.php
Alias /aboutme /about.php
Alias /work /work.php
AliasMatch /blog//([^/.]+)/? /blog/posts.php?val=$1