-1

我有一个页面,其中包含http://www.freshmarketstores.com/departments/produce/recipe.php?ing=Akane_Apples&recipe=59我想清理的 URL 看起来像http://www.freshmarketstores.com/departments/produce/recipe/Akane_Apples/59

现在,在位于生产文件夹中的 .htaccess 文件中,我有以下代码:

RewriteEngine on
RewriteRule ^recipe/(.*)/(.*)$ recipe.php?ing=$1&recipe=$2 [L]

目前,这不会影响任何事情。加载 url时recipe.php?ing=Akane_Apples$recipe=59,它加载正常,但不进行重写。这是我第一次尝试 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?

4

3 回答 3

1

确保您拥有

AccessFileName .htaccess

在你的服务器和 apache 中的虚拟主机配置文件中设置,默认设置为 .htaccess 但它不仅限于此,可以命名任何东西。

基于 debian 的系统的默认配置文件是apache 安装目录中的/etc/apache2/apache2.conf大多数其他系统httpd.conf

设置访问文件并启用 mod_rewrite 后,您可以执行以下操作

http://www.freshmarketstores.com/departments/produce/Akane_Apples/59

RewriteEngine On
RewriteRule ^recipe/([^/]*)/([^/]*)$ /recipe.php?ing=$1&recipe=$2 [L]
于 2012-10-30T20:39:36.540 回答
0

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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]
于 2012-10-30T20:48:07.037 回答
0

你应该没问题

RewriteEngine on
RewriteCond %{THE_REQUEST} \?ing=([^&]+)&recipe=([^&]+) [NC]
RewriteRule ^(departments/produce/recipe)\.php$ http://%{HTTP_HOST}/$1/%1/%2 [NC,R=301,L]
于 2012-10-30T21:05:52.487 回答