我正在使用PHP/MySQL开发前端/后端应用程序。该项目几乎完成,但我想屏蔽 URL 上显示的变量,但在我的 WAMP 本地服务器上有些东西不起作用。
mod_rewrite
活跃在阿帕奇。
下面我为我们提供所需的信息:
http://127.0.0.1/bookstoreSystem/index.php?page=home&language=en
我想将上面的 URL 转换为:
http://127.0.0.1/bookstoreSystem/en/home/
我在 .htaccess 文件中使用了以下代码:
RewriteEngine on
RewriteRule /^([^/]*)/^([^/]*)/'.php index.php?page=$1&language=$2
除此之外,当我运行此代码并尝试查看该站点时,没有任何变化或不起作用
实现这一目标的正确方法是什么?
/*****/
.htaccess 位于以下路径上:
c:/wamp/www/
和项目文件夹
c:/wamp/www/bookstoreSystem
你的代码有点混乱:
RewriteEngine on
RewriteRule /^([^/]*)/^([^/]*)/'.php index.php?page=$1&language=$2
那'.php
应该是什么?
试试这个:
RewriteEngine on
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)/?$ index.php?page=$1&language=$2 [L]
此外,不清楚根据此 URL 将.htaccess
放置在系统中的位置:
http://127.0.0.1/bookstoreSystem/en/home/
因此,最好将捕获的参数移一个数字;如果$1
和$2
,则改为$2
和$3
:
RewriteEngine on
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)/?$ index.php?page=$2&language=$3 [L]
编辑:原始海报现在说:
.htaccess 位于以下路径上:
c:/wamp/www/
和项目文件夹
c:/wamp/www/bookstoreSystem
两种解决方案。首先,只需将.htaccess
放在c:/wamp/www/bookstoreSystem
中即可。
或者将.htaccess
保留在c:/wamp/www/
中,然后使用此重做RewriteRule
:
RewriteEngine on
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)/([a-z0-9-_]+)/?$ index.php?page=$2&language=$3 [L]
请注意 ^([a-z0-9-_]+)
的三个捕获区域。这将捕获所有三个段,但该规则仅使用 $2
& $3
。这意味着bookstoreSystem/
被丢弃,但en/home/
被处理。