首页 > 解决方案 > 无法让 url mod_rewrite 在 xampp(windows 8)中工作

问题描述

无论我如何尝试让 url 重写工作,它只是一直失败,我已经谷歌搜索了很多,甚至在 stackoverflow 上尝试了很多代码,但它们都没有为我工作,最终,我被迫请求帮忙。

我希望,例如,当用户单击链接时,我希望用户在浏览器中以 facebook、stackoverflow、wikipedia 的方式或结构显示网站 URL 的漂亮格式等等就像用户访问时一样localhost:jokes=edit?4,它将其格式化为jokes/edit/4或类似的东西。

我做的第一件事是设置虚拟主机,我设置的虚拟主机是这个

#Directory structure
<Directory C:/alls>
    AllowOverride All
    Require all granted
</Directory>

#this is the default address of XAMPP    
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:/alls/ijdb/public"
    ServerName ijdb.localhost
    SetEnv NS_ENV variable_value
</VirtualHost>

在httpd.conf中,我把所有

允许覆盖

全部

并在主机文件中添加这个

127.0.0.1   ijdb.localhost

然后,在 .htaccess 中创建它

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !d
RewriteRule ^.*$ index.php [NC,L,QSA]

然而,当我单击除主页链接之外的任何其他链接时,它会返回未找到的对象。我的问题是我该如何解决?

我使用 XAMPP3.2.2,它默认与 apache 2.2.34 一起提供

从错误日志中,这就是我在那里看到的。不知道是不是跟这个有关系...

[Tue Sep 11 02:07:31.554559 2018] [ssl:warn] [pid 1012:tid 376] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Tue Sep 11 02:07:32.123856 2018] [ssl:warn] [pid 1012:tid 376] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Tue Sep 11 02:07:32.239860 2018] [mpm_winnt:notice] [pid 1012:tid 376] AH00354: Child: Starting 150 worker threads.

标签: phpapachephp-7

解决方案


首先确保 rewrite_module 是否启用。转到 apache bin 并加载模块列表,如cd c:\xampp\apache\bin && apache2.exe -M

然后修改你的虚拟主机如下:

<VirtualHost *:80>
    DocumentRoot "C:/alls/ijdb/public"
    ServerName ijdb.localhost
    SetEnv NS_ENV variable_value
    <Directory "C:/alls/ijdb/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

检查c:\xampp\apache\logs\error.log文件以获取更多详细信息。


推荐阅读