【问题标题】:remove unwanted characters from url using htaccess rewrite rule使用 htaccess 重写规则从 url 中删除不需要的字符
【发布时间】:2015-02-13 07:10:49
【问题描述】:

在我最近的项目中,重写规则运行良好,但问题是我无法从 url 中删除不需要的字符。以下是 htaccess 代码:-

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^(www\.)?domain.com\.com$ [NC]

RewriteCond %{THE_REQUEST} /find\.php\?source=([^\s&]+)&destination=([^\s&]+) [NC]

RewriteRule ^ %1-to-%2.html? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\s]+)-to-([^\s]+)?.html$ find.php?source=$1&destination=$2 [L,QSA]

输入是 find.php?source=Noida, Uttar Pradesh, India&destination=Gurgaon, Haryana, India

并且输出是: http://domain.com/Noida%2C+Uttar+Pradesh%2C+India-to-Gurgaon%2C+Haryana%2C+India.html

我只想从 url 中删除 %2C 和 + 并将它们替换为此 - 这样输出 url 将是:-

http://domain.com/Noida-Uttar-Pradesh-India-to-Gurgaon-Haryana-India.html   

【问题讨论】:

  • 试试这个可能有帮助Url Rewriting
  • 阿伦,你能给我一个简单的方法吗,因为我是 htaccess 重写规则的初学者。

标签: php .htaccess mod-rewrite redirect url-rewriting


【解决方案1】:

您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /

# replace all comma by underscore
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:,|%2C)+(.+?)\sHTTP [NC]
RewriteRule ^ %1_%2 [L,NE,R=302]

# replace all space by hyphen
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)(?:\+|%20|\s)+(.+?)\sHTTP [NC]
RewriteRule ^ %1-%2 [L,NE,R=302]

# redirect long URL to a pretty one
RewriteCond %{THE_REQUEST} /find\.php\?source=([^\s&]+)&destination=([^\s&]+) [NC]
RewriteRule ^ %1-to-%2.html? [R=302,L,NE]

# route pretty URL an actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\s]+)-to-([^\s]+)?.html$ find.php?source=$1&destination=$2 [L,QSA]

【讨论】:

  • anubhava,我想再问一件事,如果我正在应用此代码,我的原始值会像德里一样被 htaccess 修改,当我在 $_GET 的帮助下访问时,印度现在是德里印度,我可以有原始价值吗?
  • 是否可以将第一行的所有逗号转换为下划线,将所有空格转换为连字符。
  • 不,它不起作用,还请注意我的浏览器将所有逗号转换为 %2C,但你使用 %20。
  • 是的,它成功了,感谢 anubhava 的帮助。你能推荐我学习htaccess的好资源吗?
  • 这真的是一个很好的学习资源,感谢 anubhava,而且我已将您的答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 2014-05-20
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多