我的网页网址为http://www.freshmarketstores.com/departments/produce/recipe.php?ing=Akane_Apples&recipe=59
,我希望将其清理为http://www.freshmarketstores.com/departments/produce/recipe/Akane_Apples/59
现在,在我的.htaccess文件中,该文件位于produce文件夹中,我有以下代码:
RewriteEngine on
RewriteRule ^recipe/(.*)/(.*)$ recipe.php?ing=$1&recipe=$2 [L]
目前,这不会影响任何事情。当加载recipe.php?ing=Akane_Apples$recipe=59
url时,它加载正常,但不会重写。这是我第一次尝试URL重写,无法解决这个问题。
提前感谢您的帮助。
修改 好的,所以经过昨晚的一些学习,我意识到我正在接近这个。我可以输入http://www.freshmarketstores.com/departments/produce/recipe/Akane_Apples/59并获取存储在... / produce / recipe.php?ing = Akane_Apples& recipe = 59的资源。感谢您的所有帮助。
我现在的问题是,你可以采取相反的方式吗?如果我输入... / produce / recipe.php?ing = Akane_Apples& recipe = 59,我怎样才能将它重定向到/ produce / recipe / Akane_Apples / 59?
答案 0 :(得分:1)
确保您拥有
AccessFileName .htaccess
在apache中设置服务器和虚拟主机配置文件,默认设置为.htaccess但是它不仅限于此,并且可以命名为任何内容。
基于debian的系统的默认配置文件是/etc/apache2/apache2.conf
,对于apache安装目录中的大多数其他系统httpd.conf
一旦设置了访问文件并启用了mod_rewrite,您就可以执行以下操作
http://www.freshmarketstores.com/departments/produce/Akane_Apples/59
RewriteEngine On
RewriteRule ^recipe/([^/]*)/([^/]*)$ /recipe.php?ing=$1&recipe=$2 [L]
答案 1 :(得分:0)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# internal forwarding to /recipe.php
RewriteRule ^recipe/([^/]+)/([^/]+)/?$ recipe.php?ing=$1&recipe=$2 [L,QSA,NC]
# external redirect to /recipe
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+recipe\.php\?ing=([^&]+)&recipe=([^\s]+) [NC]
RewriteRule ^ recipe/%1/%2? [R=301,L]
答案 2 :(得分:0)
你应该没问题
RewriteEngine on
RewriteCond %{THE_REQUEST} \?ing=([^&]+)&recipe=([^&]+) [NC]
RewriteRule ^(departments/produce/recipe)\.php$ http://%{HTTP_HOST}/$1/%1/%2 [NC,R=301,L]