【问题标题】:URL Rewrite code is not working on my .htaccessURL 重写代码不适用于我的 .htaccess
【发布时间】:2018-08-24 02:20:46
【问题描述】:

我的原始网址

http://www.mcoh.co.in/blog-single?category=Blog&id=Janurary%202018%20Product%20training%20Scores

并期待:

http://www.mcoh.co.in/mcohBlog/Janurary%202018%20Product%20training%20Scores

但我收到的网址与原始网址相同。

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^mcoh([^/]*)/([^/]*)\$ /blog-single?category=$1&id=$2 [L]

【问题讨论】:

  • 所以你想要你的 url 不带 .php 还是带?我不明白。您的第一条规则将删除 php.ini。您将在“原始”网址中获得哪个,那么问题出在哪里?
  • 等等,所以您的第一条规则将删除 .php,而您的第二条规则将重新添加 .php?什么?你能更准确一点,或者至少告诉我们你真正想要什么吗?您想将您的原始网址“转换”为您期望的网址吗?是吗?
  • @DiogoJesus 将 about.php 留在重写规则中,我期待这个 url:mcoh.co.in/mcohBlog/…

标签: php .htaccess url url-rewriting url-rewrite-module


【解决方案1】:

你对这一行的问题:

RewriteRule ^mcoh([^/]*)/([^/]*)\.php$ /blog-single?category=$1&id=$2 [L]

将其替换为:

RewriteRule ^mcoh([^/]*)/([^/]*)$ /blog-single?category=$1&id=$2 [L]

扩展名已被先前的规则删除。

此外,您的代码应如下所示:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
RewriteRule ^mcoh([^/]*)/([^/]*)$ /blog-single?category=$1&id=$2 [L,NE]

【讨论】:

  • 在放置 htaccess 代码之后,我的 url 也没有被重写为那种特定的方式。它以这种方式单独出现mcoh.co.in/… 删除那些 blog-single?category=Blog 应该替换为 mcohBlog
  • 即使在清除缓存和历史记录之后,也会得到相同的 url。它没有被重写
  • @JEEVA 是,内部从 /mcohBlog/Janurary%202018%20Product%20training%20Scores 重定向到原来的 /blog-single?category=Blog&id=Janurary%202018%20Product%20training%20Scores跨度>
  • 你告诉我删除那一行 Mr.@Mohammed Elhag。
  • @JEEVA 我说替换它,保存你的代码并复制我的代码并按原样测试它,先清除缓存
【解决方案2】:
RewriteEngine on
RewriteRule ^/?mcohBlog/([^/d]+)/?$ blog-single.php?category=Blog&id=$1 [L,QSA]

你可以试试这个吗?只需在代码末尾添加此重写规则。并删除你的最后一行代码


编辑

您的代码组织也非常错误。这就是为什么它没有按预期工作的原因

Options +FollowSymLinks -MultiViews     
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
RewriteRule ^/?mcohBlog/([^/d]+)/?$ blog-single.php?category=Blog&id=$1 [L,QSA]

这应该是你的最后一个代码

【讨论】:

    【解决方案3】:

    重定向/重写

    http://www.mcoh.co.in/blog-single?category=Blog&id=Janurary%202018%20Product%20training%20Score
    

    http://www.mcoh.co.in/mcohBlog/Janurary%202018%20Product%20training%20Scores
    

    将以下内容放在 htaccess 文件的顶部

    RewriteEngine on
    
    #To externally redirect /blog-single?category=foo&id=bar to /mochBlog/bar
    RewriteCond %{QUERY_STRING} ^category=([^&]+)&id=(.+)$ [NC]
    RewriteRule ^.*$ /mochBlog/%2? [R,L]
    #To internally redirect /mochBlog/bar to /blog-single?category=foo&id=bar
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^mochBlog/(.+)$ /blog-single?category=blog&id=$1 [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多