【问题标题】:Using .htaccess to Rewrite URLs with ID and Filename使用 .htaccess 重写带有 ID 和文件名的 URL
【发布时间】:2012-01-30 21:13:35
【问题描述】:

我正在尝试使用 .htaccess 重写一个 URL,并且有一个问题经过数小时的搜索后无法找到答案。而且,我的正则表达式技能不是那么好也无济于事......

我的网址的基本格式是:http://mysite.com/article.php?id=1

我想直接在那里有这样的 URL:http://mysite.com/article/1/made-up-irrelevant-title-slug

问题是,我希望 article 成为一个变量,这样它就可以更改为 page 并指向类似:http://mysite.com/page.php?id=1,来自 http://mysite.com/page/1/made-up-page-name

如果有人知道这是怎么写的,我将非常感激!

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:
    # Turn on Rewrites
    RewriteEngine on
    
    # Do not rewrite existing files, directories, or symlinks.
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    
    # Rewrite /COMPONENT/ID/TITLE -> COMPONENT.php?id=ID
    RewriteRule ^([^/]+)/(\d+)/.*$ $1.php?id=$2 [L]
    

    【讨论】:

    • 这个我试过了,但是由于某种原因,在域名启动之前有一些服务器目录,它加载了一个404页面。 IE 它将转到服务器路径而不是 Web 路径。我必须在某处添加%{HTTP_HOST} 吗?
    • 尝试在条件和规则前添加RewriteBase /
    • 谢谢!那行得通!现在样式表消失了,但我敢肯定这是我能找到的简单修复!
    • @Justin - 您需要在除 PHP 包含和需要函数之外的所有文件链接前添加正斜杠
    • @Justin - 我的回答更进一步,但你可能想研究一下,因为它涵盖了使用自定义 URL,就像你在问题中用作示例一样,但摆脱了前面的身份证
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2013-04-22
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多