mod_rewrite的固定链接
问题描述:
是否可以制作一个短URL规则,以便在http://mydomain.com/之后的每个单词(除了根文件夹)都将被重定向到/index.php?permalink=$1?mod_rewrite的固定链接
例子:
http://mydomain.com/ - 转到的index.php(标准)。 http://mydomain.com/word - 转到index.php的永久=字
我的.htaccess貌似现在这种权利?
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteRule /page/([0-9]+) /?page=$1
答
试试这个:在一行的开头
RewriteRule ^.*/(\w+)\b$ /index.php?permalink=$1
^
断言位置。 .*/
匹配任何单个字符或任何内容,直到最后一个/
。 (\w+)
匹配字母,数字,下划线,至少一个字符,并将其捕获为组编号1. \b
断言在字边界的位置。 $
断言在行尾的位置。
这样:
http://mydomain.com/word1
成为/index.php?permalink=word1
http://mydomain.com/publish_files/word2
成为/index.php?permalink=word2
有关评论你的要求,试试这个,但我还没有测试它尚未:
RewriteCond %{HTTP_REFERER} !^(http://)?{HTTP_HOST}/[^/]+/.*$ [NC]
RewriteRule ^.*$ /index.php
RewriteCond %{HTTP_REFERER} !^(http://)?{HTTP_HOST}/\w+$ [NC]
RewriteRule ^.*/(\w+)$ /index.php?permalink=$1
谢谢你的回复。你能解释一下你的正则表达吗? 它的作品,但不像我想象的那样。当我使用不是根目录中文件夹的单词时,它可以工作。但是当我输入一个文件夹时,我会重新访问http://mydomain.com/publish_files/?permalink=publish_files。我不明白为什么它决定在URL后添加“?permalink = publish_files”。 如果我可以在正则表达式中决定哪些词应该被忽略,那么最佳的方法是。这可能吗? – horgen 2010-10-21 08:14:30
在你最近的情况下(当你使用一个词是一个文件夹),你的期望是什么?你会编辑你的问题,包括你最近的情况?你的问题完全解决后,我会解释我的正则表达式。 – Vantomex 2010-10-21 08:30:44
我只是好奇它为什么在URL后添加“?permalink = word”,如果该单词是一个文件夹。如果有可能将其删除。否则,它看起来像工作正常。 :) – horgen 2010-10-21 08:57:07