【问题标题】:APACHE Mod Rewrite - Dynamic URLs to Semantic URLsAPACHE Mod Rewrite - 语义 URL 的动态 URL
【发布时间】:2017-05-05 23:44:20
【问题描述】:

我有一个基于 Google 地图的小型网络应用程序。我有这样的网址:

http://www.example.com/web.php?u=olives-restaurante-de-ensaladas-en-margarita

我想拥有这个:

http://www.example.com/web/olives-restaurante-de-ensaladas-en-margarita

所以我想将我的参数dynamic URLs 转换为semantic URLs

我怎样才能做到这一点?!

我尝试将以下代码放在我的.htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^web/([A-Z0-9]+)/$ web.php?u=$1

但遗憾的是,当我尝试访问 http://www.example.com/web/olives-restaurante-de-ensaladas-en-margarita 时,它会将我重定向到 404 页面。

我做错了什么?

【问题讨论】:

  • 请注意,这个问题与programming 相关的 SEO 相关,遵循指南。
  • 也许我的服务器不接受 Mod-Rewrite?我该如何检查?

标签: apache .htaccess mod-rewrite dynamic-url


【解决方案1】:
RewriteRule ^web/([A-Z0-9]+)/$ web.php?u=$1

http://www.ubikate.com.ve/web/olives-restaurante-de-ensaladas-en-margarita

您的RewriteRule 模式 (^web/([A-Z0-9]+)/$) 不允许使用连字符,强制使用斜杠并且只匹配大写字母,因此这与您请求的 URL 不匹配。

请尝试以下方法:

RewriteRule ^web/([\w-]+)$ web.php?u=$1 [L]

\w 是等同于[a-zA-Z0-9_] 的速记字符类。

【讨论】:

  • 尝试暂时将其更改为重定向RewriteRule ^web/([\w-]+)$ /web.php?u=$1 [R,L](注意斜杠前缀和R 标志)。您在浏览器地址栏中看到了什么?
  • 做到了,我看到的一样:http://www.example.com/web/olives-restaurante-de-ensaladas-en-margarita/
  • 您的.htaccess 文件中还有其他指令吗?或者文件系统路径上的任何其他.htaccess 文件?
  • 不,这是唯一的,位于/public_html/,我只有3行:Options +FollowSymLinks RewriteEngine On RewriteRule ^web/([\w-]+)$ /web.php?u=$1 [R,L]
  • 尝试在文件顶部添加一些“废话”。你有错误吗? (您应该会收到 500 错误。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多