【问题标题】:Show only product name in url Laravel 5.5在 url Laravel 5.5 中仅显示产品名称
【发布时间】:2018-12-05 06:20:53
【问题描述】:

我有一个这样的网址 https://rockmobile.pk/detail/oneplus6 并希望删除“详细信息”一词并仅显示产品名称,例如 https://rockmobile.pk/oneplus6.html 。我在公用文件夹中的 .htaccess 文件是

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    RewriteRule ^([^-]*).html$ detail/$1/  [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L] 
</IfModule>

重写规则

RewriteRule ^([^-]*).html$ detail/$1/  [L]

检测 /oneplus6.html 但 url 更改为 /detail/oneplus6

(在 localhost apache wampserver 上测试过)

http://localhost/projectName/public/oneplus6.html 改成 http://localhost/projectName/public/detail/oneplus6

【问题讨论】:

  • 嗨,萨阿德。我已经为您的问题提供了有效的解决方案。如果有任何问题,请发表评论,或者如果这解决了您的问题,请接受答案,以便其他 SO 用户可以从中受益。

标签: php .htaccess mod-rewrite laravel-5.5


【解决方案1】:

您需要使用重写规则中的[P],以便它代理请求

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    RewriteRule ^([^-]*).html$ detail/$1/ [P]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L] 
</IfModule>

【讨论】:

  • 删除 [L] 后会抛出错误“抱歉,找不到您要查找的页面。”
  • 是的,当我浏览“public/detail/oneplus6”时,它会显示内容
  • 好的。所以你想重写,但不应该在浏览器中更改 url。是吗?在这种情况下,您应该使用 [P] 标志。让我更新我的答案
  • 更新到 [P] 标签后显示未找到错误,它与 Laravel 相关,我已经在简单文件中测试了我的重写规则,它工作正常,它不适用于 Laravel
猜你喜欢
  • 2018-08-22
  • 2017-09-27
  • 2019-06-18
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多