htaccess重写规则重定向到文件与否

时间:2010-06-09 08:17:03

标签: php .htaccess

我一直在尝试编写一组htaccess规则来执行以下操作:

  • 使用网址: mydomain.com/blog/something

    • 如果在。中存在名为blog.php的文件 web目录(带有的目录) index.php in)然后重定向到
      blog.php的?URL =东西

    • 如果blog.php不存在,请重定向 index.php?url = blog / something

    • 编辑:mydomain.com/blog/something是一个例子,它可以是任何URL字符串和htaccess的应该搜索web目录对应于URL字符串,第一部分的文件,其在这种情况下是“博客”

在这两种情况下我就可以使用$ _GET [“网址”]来从URL参数intiate在我的PHP脚本的任何动作。

我目前有:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

</IfModule>

但不幸的是,这不起作用,我不知道为什么,我对php足够熟练,但我的htaccess技能非常有限。我不知道[L]选项是否应该使用,或者我是否应该使用更多选项。目前无论url字符串是什么,$ _GET ['url']都会返回“index.php”。

如果需要更多信息,请询问。

我希望有人可以提供帮助 问候 路加

1 个答案:

答案 0 :(得分:2)

我希望以下指令对您有用。

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?.*$ - [E=FILE:%{DOCUMENT_ROOT}/$1.php]

RewriteCond %{ENV:FILE} !^$
RewriteCond %{ENV:FILE} -f
RewriteRule ^([^/]*)/?(.*)$ $1.php?url=$2 [QSA,L]

RewriteCond %{ENV:FILE} !^$
RewriteCond %{ENV:FILE} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Apache mod_rewrite参考:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html