使用mod_rewrite与XAMPP和Windows 7 - 64位?

Mar*_*rco 4 php apache xampp mod-rewrite

我有一个简单的mod_rewrite规则,允许我将任何非实际文件或目录的请求重定向到index.php文件

    Options +SymLinksIfOwnerMatch 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
Run Code Online (Sandbox Code Playgroud)

在PHP文件中我把这个简单的代码来处理这个导航

<?php
$navString = $_SERVER['REQUEST_URI']; // Returns "/Mod_rewrite/edit/1/"
$parts = explode('/', $navString); // Break into an array
// Lets look at the array of items we have:
print_r($parts);
?>
Run Code Online (Sandbox Code Playgroud)

我的开发环境是XAMPP和Windows 7 - 64位httpd.conf文件

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>

<Directory "C:/xampp/cgi-bin">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我将任何变量传递给脚本时,例如

http://locahost/test/somethinghere/andhere
Run Code Online (Sandbox Code Playgroud)

它将我重定向到本地主机默认页面

http://locahost/xampp
Run Code Online (Sandbox Code Playgroud)

mat*_*ict 11

以下是如何在xampp中启用.htaccess mod_rewrite的说明.

  1. 在文本编辑器中打开并编辑C:\ xampp\apache\conf\httpd.conf

  2. 找到包含的行

    #LoadModule rewrite_module modules/mod_rewrite.so
    
    Run Code Online (Sandbox Code Playgroud)

    和(取消注释)更改为

    LoadModule rewrite_module modules/mod_rewrite.so
    
    Run Code Online (Sandbox Code Playgroud)
  3. 查找所有出现的

    AllowOverride None
    
    Run Code Online (Sandbox Code Playgroud)

    并改为

    AllowOverride All
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重启xampp

那就是你应该好好去.

帮助:http://www.leonardaustin.com/blog/technical/enable-mod_rewrite-in-xampp/


Mar*_*rco 4

解决了我刚刚将文件夹添加到 .htaccess 并删除选项 +SymLinksIfOwnerMatch

RewriteBase /test/
Run Code Online (Sandbox Code Playgroud)