我怎么能只为某些页面重写我的网址

时间:2012-12-27 15:14:11

标签: php .htaccess url rewrite

如何使用.htaccess仅重写某些网页的网址?

例如,我希望它能在index.php上工作,但不能在网站的其他页面上工作,也不能在index.php的所有页面上工作。

我遇到了子域和php脚本的问题,其中重定向我正在使用的URL会搞乱。下面是我想要使用的脚本类型的示例。

Options +FollowSymLinks -MultiViews

# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ index.php/?node=$1&id=$2 [L,QSA]

RewriteRule ^([^/]+)/?$ index.php/?node=$1 [L,QSA]

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

您可以将URL作为REQUEST_URI服务器变量传递:

RewriteCond %{REQUEST_URI} ^(your_url)$
RewriteRule %1 do_some_stuff

举个例子:

RewriteCond %{REQUEST_URI} ^index.php$
RewriteRule %1 - [F]

或者只是将其传递给RewriteRule

RewriteRule ^index.php$ do_some_stuff

答案 1 :(得分:2)

您应该查看.htaccess的RewriteCond(条件) 查看http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/以获取大量信息和示例。

您还可以为index.php编写规则,然后将其标记为最后一条规则[l]

RewriteRule ^/index.php(.*)   /index.php$1  [L]
RedirectRule ^/(.*)$   /index.php?path=$1  [L]