如何使用.htaccess文件中的mod_rewrite重写URL

时间:2013-04-07 23:42:49

标签: apache .htaccess mod-rewrite

有关如何使用mod_rewrite更改网址的明确参考吗?

我正在尝试进行基本的URL重写,当我试图解决这个问题时,我发现有一百万个问题来自人们正在努力解决这个问题以及许多随机的例子,但没有单一的资源只是解释它是怎么回事工作以及所有选项是什么,等等。有时我很幸运,找到类似于我正在尝试做的事情,但往往有许多不同的版本。有时它们都有效。有时他们都没有。所以这是一个猜谜游戏。

我找到了apache mod_rewrite文档,但它看起来像便宜的立体声指令。 (只是一堆混乱的细节和例子没有明确的关系)所以我仍然在猜测很多事情。

如果这是一个简单的答案,我会包括我正在尝试做的事情,但我宁愿使用RTFM,以便下次我能自己解决这个问题:

example.com/hideme/* - > example.com/* (隐藏特定的子目录)

2 个答案:

答案 0 :(得分:1)

# security requirement
Options +FollowSymlinks

# turn rewrite engine on
RewriteEngine on

# you only need to do those directives above once per .htaccess

# remap example.com/ w/ or w/o slash in the end into example.com/hideme/
RewriteRule ^/?$ /hideme/

# remap example.com/$group into example.com/hideme/$var
RewriteRule ^(.+)$ /hideme/$1

# redirect example.com/hideme w/ or w/o slash in the end into example.com/
RewriteRule ^hideme/?$ / [R]

# redirect example.com/hideme/$group into example.com/$var
RewriteRule ^hideme/(.+)$ /$1 [R]

实际上,我不知道上面的代码是否有错误,这就是为什么程序员总是测试他们做了什么,如果有效,他们就完成了,没有必要将他们的代码与其他代码进行比较哪个更好。这是我最喜欢的说明之一,我认为最简单:http://corz.org/serv/tricks/htaccess2.php


其他链接:

当我正在寻找mod_rewrite模式语法,RewriteCond运算符等等时,我经常访问

http://semlabs.co.uk/journal/mod_rewrite-quick-reference-and-cheat-sheet

答案 1 :(得分:0)

$DOCUMENT_ROOT目录中使用此.htaccess隐藏目录_wp

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+_wp/([^\s]+) [NC]
RewriteRule ^ /%1 [R=302,L]

# assuming your cake installation is in /tests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?!^tests/)^(.*)$ /_wp/$1 [L,NC]

这会从网址中删除/_wp

除了那些有用的Google搜索结果之外,还有其他人{/ 3}}。