【问题标题】:htaccess rewrite rule to redirect to file or nothtaccess 重写规则是否重定向到文件
【发布时间】:2011-03-01 13:13:26
【问题描述】:

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

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

    • 如果一个名为 blog.php 的文件存在于
      网络目录(目录与 index.php 中)然后重定向到
      blog.php?url=something

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

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

在这两种情况下,我都可以使用 $_GET['url'] 从 url 获取参数以启动我的 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”。

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

希望有人能帮忙 问候 卢克

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

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

    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

    【讨论】:

    • 您好,感谢您的回答,恐怕我的问题还不够清楚,我真正想要的是htaccess文件在web目录中查找与第一部分对应的文件的 url 到 "/" 所以 "blog" 是一个例子,我可以在 htaccess 文件中写很多行但是如果我在 web 目录中有 10 个 php 文件,那么这是我希望避免的很多 repatition .再次感谢卢克
    • 经过反复试验,找到了合适的解决方案。已更新答案,请检查它是否适合您。
    • 不幸的是,它似乎不起作用,当我有 url mydomain.com/index 时,我得到“在此服务器上找不到请求的 URL /web/index”。再次“索引”只是一个示例,这可能是因为我的 web 目录不在站点的根目录中,而站点根目录中的另一个 htaccess 转发到了 web 目录?不确定这是否是我收到此错误的原因。
    • 感谢您的回复,能坚持下来真是太好了,非常感谢。
    • 已更新答案。我希望这最终对你有用。
    猜你喜欢
    • 2013-01-21
    • 2020-11-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多