【问题标题】:correct way to use mod_rewrite使用 mod_rewrite 的正确方法
【发布时间】:2014-11-24 09:56:22
【问题描述】:

我已经关注了很多 stackoverflow 问题和谷歌搜索,但我无法正确重写我的 url。 这是我网站的一个简单示例

root-|
     |__mydomain-|
                 |
                -|
                 |__cat1-|__.htaccess
                 |       |__index.php
                 |       |__single.php
                 |
                 |__.htaccess
                 |__index.php  // home-page

我的主页包含一个菜单链接:mysite.com/cat1
-> 正确显示“root/cat1/index.php”。

问题1:
对于包含 cat1/post-id/title 的任何其他链接,我需要将 url 重写为 single.php?id=post-id

mysite.com/cat1/123/title  
   ->  should show single php with content of post with id:123

我在 root/cat1/.htaccess 中写的内容

Options +FollowSymLinks
RewriteEngine on
<IfModule mod_rewrite.c>

RewriteBase /cat1/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ single.php?id=$1 [L,QSA]

</IfModule>

我得到类似的错误

[Mon Nov 24 13:49:08.549284 2014] [:error] [pid 7144:tid 784] [client 127.0.0.1:21397]
script 'C:/wamp/www/single.php' not found or unable to stat

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    你可以在/cat1/.htaccess里面稍微改变你的规则:

    Options +FollowSymLinks
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /cat1/
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(\d+)/(.+?)/?$ single.php?id=$1&title=$2 [L,QSA]
    
    </IfModule>
    

    确保这是/cat1/.htaccess

    PS:我添加了title 参数,以便您可以在single.php 文件中验证标题是否正确(如果需要)。

    【讨论】:

    • 非常感谢。但我仍然在此服务器上找不到请求的 URL /cat1/single.php。它似乎是在 root/cat1/single.php 中而不是在 root/mydomain/cat1/single.php 中寻找该文件,因为当我创建一个简单文件时在这个路径中: root/cat1/single.php 它出现了!!
    • 我将.htaccess 上传到我的主机,它在那里工作!但在我当地我仍然有问题。我本地的 wamp 服务器似乎有问题
    • 好的,问题似乎是您的本地主机上的这个额外的/mydomain/ 文件夹,它在实时服务器上不存在。在本地主机上使用 RewriteBase 行作为 RewriteBase /mydomain/cat1/
    • 好的,我做了一个小改动,去掉了斜杠。在两种浏览器中尝试一下。
    • 不错的一个 :) 非常感谢,你拯救了我的一天
    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 2014-01-17
    • 2015-12-17
    • 2012-02-23
    • 2013-01-09
    • 2010-12-28
    • 2012-04-26
    • 2014-10-24
    相关资源
    最近更新 更多