【问题标题】:Redirecting URLs after mod_rewrite?在 mod_rewrite 之后重定向 URL?
【发布时间】:2013-09-27 16:56:53
【问题描述】:

我正在尝试了解 mod_rewrite 的工作原理。例如,如果我有这样的 URL:

example.com/user.php?id=123

使用 mod_rewrite 我可以创建 URL Like:

example.com/user/123

现在可以了,但是在我的应用程序的其他位置,我已经使用旧格式链接到用户页面,例如:

<a href="user.php?id=123">123</a>

现在这是否意味着我需要手动更改所有这些链接并且应该根据新格式进行链接?例如:

<a href="user/123">123</a>

或者这也应该使用 mod_rewrite 来完成? 我没有使用任何 PHP 框架。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    从长远来看,是的,您必须更改它,但您也可以重定向:

    Options +FollowSymLinks -MultiViews
    
    RewriteEngine On
    RewriteBase /
    
    # Externally redirect /user.php?id=123 to /user/123
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(user)\.php\?id=([^&\s]+) [NC]
    RewriteRule ^ /%1/%2? [R=301,L]
    
    # Internally forward /user/123 to /user.php?id=123
    RewriteRule ^user/([0-9]+)/?$ /user.php?id=$1 [NC,L]
    

    外部重定向是在浏览器上更改 URL 的重定向,内部重定向是不更改 URL 但显示其他地方的内容的重定向。

    虽然上述内容会将用户重定向到:

    example.com/user.php?id=123
    

    example.com/user/123
    

    最好将链接更改为使用对 SEO 友好的链接,以避免用户在访问或浏览您的网站时出现额外的重定向。

    【讨论】:

    • 谢谢,我现在清楚了。我不会使用 .htaccess 来重定向 URL,而是会在我的应用程序中将它们更改为新格式。
    • @user2738640 here is another answer I've replied that might also be of your interest. 简单地说,如果你有一个控制器,你可以使用.htaccess上的简单规则从你的代码中创建你自己的路由系统
    【解决方案2】:

    找到数据库中的所有链接并替换

    UPDATE `myTable`
    SET myCol = REPLACE(myCol, '<a href="user.php?id=', '<a href="user/')
    WHERE keyCol = testKey;
    

    做整张表,去掉WHERE子句

    我认为这行得通,我现在不怎么玩 sql

    【讨论】:

    • 如果他使用 MySQL 来存储链接,并且如果它是您认为他这样做的方式。
    • 是的,我确实假设了。我假设如果你对数据库很好,你不会在这里问,如果你使用像 PostgreSQL 这样的另一种数据库类型,你仍然不会问,因为你对数据库很好;)我不介意平面文件,但数据库更灵活。 ..对于许多假设,我会删掉它
    • 他从来没有说过他正在使用数据库,因为他问了一个.htaccess 问题,其中部分内容是他的 HTML 目前的样子。他也从未使用任何 db 标签对其进行标记。
    • @gwillie 感谢您的回答,但它与数据库无关。我只存储 db 的 ID,而不是整个 url,这在 imo 中没有多大意义。
    • @Prix 和 user2738640,你说的太对了,我想得太远了:)
    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多