现在为我的网站夫妇提供重写规则,但未成功完成。
google了很多,并在stackoverflow中找到了一些非常重要的主题,特别是 this one 。我已经做了网上提到的所有更改。在我谈到我对httpd.conf
所做的更改之前,我希望分享我wamp
的目录结构
我网站的根目录是 C:/wamp/www/dist
。我的网站的index.php
和.htaccess
个文件保存在此 dist 文件夹中,还有其他网站的子目录。< / p>
我的变化::
wamp --> Apache --> Apache modules --> rewrite_module
检查了
----------------IN MY APACHE httpd.conf file----------------
LoadModule rewrite_module modules/mod_rewrite.so //removed # sign from it
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
<Directory "c:/wamp/www/dist/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
现在我在 .htaccess
中创建了一个C:/wamp/www/dist
文件(index.php也在这里)
所以我的.htaccess
看起来像
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /dist/
RewriteRule ^([^/]*)\.html$ /dist/?path=$1
</IfModule>
结果/错误:: 它不起作用网址与之前相同(丑陋)。网址没有变化。
错误解释:: 从我在其他子目录中的任何页面发送请求到我的index.php看起来像http://localhost/dist/?path=home
并且在检查路径变量的值之后index.php
包含必要的文件。所以我想将我的网址设为http://localhost/dist/home
。但正如我所说它不起作用。我的网址仍然存在
创建 http://localhost/dist/?path=home
文件
.htaccess
注1 :: 我检查了 phpinfo()
模块已加载。
注意2 :: 我尝试从<IfModule mod_rewrite.c>
删除.htaccess
,但它没有任何效果再次相同
答案 0 :(得分:1)
保持/dist/.htaccess
像这样:
DirectorySlash Off
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /dist/
# Use %{THE_REQUEST} to make an external redirect from /dist/?path=home to /dist/home
RewriteCond %{THE_REQUEST} \?path=([^\s&]+)\s [NC]
RewriteRule ^ %1? [R=302,L,NE]
## internal rewrite from /dist/home to /dist/?path=home
# not a file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?path=$1 [L,QSA]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1
QSA
(查询字符串追加)标记在添加新查询参数时保留现有查询参数。