我正在使用PHP / MySQL开发前端/后端应用程序。该项目已基本完成,但我想屏蔽URL上显示的变量,但是我的WAMP本地服务器上的某些内容无效。
mod_rewrite
在Apache中处于活动状态。
下面我提供了所需的信息:
http://127.0.0.1/bookstoreSystem/index.php?page=home&language=en
我想将上面的网址转换为:
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
答案 0 :(得分:0)
您的代码有点令人困惑:
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]
另外,根据此网址,不清楚系统中.htaccess
的放置位置:
http://127.0.0.1/bookstoreSystem/en/home/
因此,最好将捕获的参数移动一个数字;如果$2
和$3
改为$1
和$2
:
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/
会被执行。