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 
+0

谢谢你的回复。你能解释一下你的正则表达吗? 它的作品,但不像我想象的那样。当我使用不是根目录中文件夹的单词时,它可以工作。但是当我输入一个文件夹时,我会重新访问http://mydomain.com/publish_files/?permalink=publish_files。我不明白为什么它决定在URL后添加“?permalink = publish_files”。 如果我可以在正则表达式中决定哪些词应该被忽略,那么最佳的方法是。这可能吗? – horgen 2010-10-21 08:14:30

+0

在你最近的情况下(当你使用一个词是一个文件夹),你的期望是什么?你会编辑你的问题,包括你最近的情况?你的问题完全解决后,我会解释我的正则表达式。 – Vantomex 2010-10-21 08:30:44

+0

我只是好奇它为什么在URL后添加“?permalink = word”,如果该单词是一个文件夹。如果有可能将其删除。否则,它看起来像工作正常。 :) – horgen 2010-10-21 08:57:07