与.htaccess的SEO不在本地WAMP服务器上工作

时间:2014-06-03 00:47:39

标签: php apache .htaccess mod-rewrite

我正在使用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

1 个答案:

答案 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/会被执行。