我试图找出为什么我的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
。
答案 0 :(得分: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
假设post
和anything
是Folder
变量,而假设脚本名称(post.php)是固定的。
对于永久和可见重定向,将[L]替换为[R = 301,L]
答案 1 :(得分: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文件所在的位置。 (在本例中名为Folder的目录中)