使用.htaccess重命名动态URL?

时间:2019-04-16 06:22:04

标签: apache .htaccess mod-rewrite

我正在研究一个PHP项目,我想重命名某些动态页面的URL。

例如,我有这个URL。

https://example.com/@dynamic名称

我想将其更改为。

https://example.com/artists/@dynamic名称/组合

如何使用.htaccess进行操作?

1 个答案:

答案 0 :(得分:1)

此.htaccess文件将重定向

https://example.com/@dynamic_folderhttps://example.com/artists/@dynamic_folder/portfolio

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^dynamic_folder/(.*)$ artists/dynamic_folder/portfolio/$1 [R=301,L]

或这个

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} example.com$ [NC]
RewriteCond %{HTTP_HOST} !dynamic_folder [NC]
RewriteRule ^(.*)$ http://example.com/artists/dynamic_folder/portfolio/$1 [R=301,L]

代码说明

  • 选项+ FollowSymLinks是Apache指令,是mod_rewrite的先决条件。
  • RewriteEngine On启用启用mod_rewrite。
  • RewriteRule定义特定规则。
  • RewriteRule之后的第一个字符串定义了原始URL的外观。

  • RewriteCond%{HTTP_HOST}显示我们执行和不希望通过重写运行的URL。

    • 在这种情况下,我们要匹配example.com。
    • !表示“不是”。我们不想重写已经包含folder1的URL,因为那样的话它将不断添加folder1,并且它将成为一个无限长的URL。
  • [NC]匹配URL的大写和小写版本。

  • RewriteRule之后的第二个字符串定义了新的URL。这是在 与文档根目录(html)的关系。 /表示html 目录本身,也可以指定子文件夹。

      最后的
    • $ 1与第一个字符串中括号()中的部分匹配。基本上, 这样可以确保将子页面重定向到同一子页面 而不是主页。忽略它以重定向到主页。
  • [R = 301,L]-这将执行301重定向,并且还阻止任何以后的重写规则影响此URL(在最后一个规则之后添加一个好主意)。它与 最后是RewriteRule。