【问题标题】:PHP how to redirect url path to index.phpPHP如何将url路径重定向到index.php
【发布时间】:2017-09-22 21:42:46
【问题描述】:

我目前有一个带有这种模式的网址的网站

https://website.com/?p=something

其中 p 是请求的页面(例如 /?p=login)

出于 SEO 原因,我希望 URL 看起来像这样

https://website.com/login/

我当然可以做这样的重定向

Redirect 301 /login/ https://website.com/?p=login

但它会将用户浏览器中显示的 URL 更改回带有参数的 URL。

我的问题是,我怎样才能拥有像 https://website.com/login/ 这样的 URL,但在 index.php 内的 PHP 中,我可以像 $page = $_GET['p']; 一样访问请求页面或“路径”。换句话说,我想将 URL https://website.com/login/ 重定向到 https://website.com/?p=login,但 URL 仍显示为 https://website.com/login/

【问题讨论】:

    标签: php .htaccess url redirect


    【解决方案1】:

    我建议使用 .htaccess 文件将所有对服务器的请求指向一个文件,例如 index.php

    # Rewrite Engine ON
    RewriteEngine on
    
    # Redirect everything to one file
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
    

    之后,您可以编写一个路由器来处理 URI 组件。

    例如有人调用站点名/登录名

    你检测到 /login 并打开需要的页面

    【讨论】:

    • 是否可以对该规则进行例外处理?例如。对于 /sidemap.xml ?
    • 我尝试添加以下条件RewriteCond %{REQUEST_URI} !^sitemap.xml 但它仍在被重定向...
    • 以上仅适用于没有扩展名的路径,因此无需更改 sitename/sitemap.xml 将与 sitemap/script.php 一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2010-10-24
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多