1

我试图弄清楚为什么我的 htaccess 文件中的重写规则没有将 URL 更改为更“SEO 友好的 URL”。

这是我的意思的一个例子:

我想从这个出发:

www.mydomain.com/Folder/post.php?url="how-to-make-me-a-happy-camper"

对此:

www.mydomain.com/Folder/how-to-make-me-a-happy-camper

或这个:

www.mydomain.com/Folder/post/how-to-make-me-a-happy-camper

这是我的 htacess 代码:

RewriteEngine on
RewriteRule ^post/([a-zA-Z0-9-/]+)$ /post.php?url=$1

或没有帖子/

我似乎无法使正则表达式正常工作,因为当我点击链接时,它会将我带到 www.mydomain.com/Folder/post.php?url=how-to-make-me-a-happy-camper.

4

2 回答 2

1

尽管这个问题令人困惑(描述与重写规则所指示的相反)并且没有所有必需的信息,但您可以在根目录中的一个 .htaccess 文件中尝试此操作:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !post\.php             [NC]
RewriteCond %{REQUEST_URI} ^/Folder               [NC]
RewriteRule ^.*/([^/]+)/? /Folder/post.php?url=$1 [L]

静默地图

http://www.mydomain.com/Folder/post/anything或者

http://www.mydomain.com/Folder/anything

http://www.mydomain.com/Folder/post.php?url=anything

字符串postanything假定是可变的,而Folder脚本名称(post.php)假定是固定的。

对于永久和可见的重定向,将 [L] 替换为 [R=301,L]

于 2013-03-04T16:27:54.767 回答
0

在您的 htaccess 文件中使用 RewriteBase 选项。

 RewriteBase / #( or if your document root in a subfolder named Folder: /Folder/ )

并且您应该添加两个 RewriteCondition,因此您的 .htaccess 文件(它不连接到您的主题,但如果您使用 apache rewrite_mod 则推荐)应该如下所示:

RewriteEngine on

RewriteBase /Folder/
RewriteCond %{REQUEST_FILENAME} !-f # the requested uri does not points to a file
RewriteCond %{REQUEST_FILENAME} !-d # the requested uri does not points to a directory
RewriteRule ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1

而且,.htacces 文件应该是您的 post.php 文件所在的位置。(在这种情况下在名为文件夹的目录中)

于 2013-03-04T14:40:17.283 回答