【问题标题】:Change URLs with .htaccess使用 .htaccess 更改 URL
【发布时间】:2013-09-03 17:48:21
【问题描述】:

我有一个网站,我正在尝试更改其 URL。所有 URL 都以 http://domain.com/? 开头?

例如,http://domain.com/?index

我只想删除问号。我不在乎它是否出现在地址栏中,我只希望我的用户能够访问网站上的页面而无需键入问号。

所以,如果用户想要访问http://domain.com/?index,我希望他们能够通过输入http://domain.com/index 来访问它。

这可以使用 .htaccess 吗?

我已经四处搜索并尝试了几天不同的事情,但仍然无法找到一种方法来完成我正在尝试做的事情。

感谢任何帮助。

谢谢。

【问题讨论】:

  • 请告诉我们您尝试了什么以及出了什么问题。
  • 如果您的原始 URL 是 http://domain.com/admin/search.php?id=5&name=foo。你希望它变成什么?

标签: php apache .htaccess url


【解决方案1】:

试试:

RewriteEngine On

# Match against the request instead of the URI
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?([^&\ ]+)&?([^\ ]*)
RewriteRule ^$ /%1?%2 [L,R=301]

这需要像http://example.com/?path/to/file.txt 这样的URI 并将浏览器重定向到http://example.com/path/to/file.txt。浏览器将改为在地址栏中显示该 URL。当然,这是假设如果有人确实访问了那个 URL,那么除了 404 之外还有其他东西可以提供。


编辑

在内部将非查询字符串 URL 映射到带有查询字符串的 URL:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /?$1 [L]

【讨论】:

  • 这确实成功地重定向了页面,但它给了我一个 404 错误,因为没有任何东西可以提供。我认为这只是倒退。我希望将example.com/path/to/file.txt 重定向到example.com/?path/to/file.txt,而不是将example.com/?path/to/file.txt 重定向到example.com/path/to/file.txt。这可能吗?感谢您的帮助
  • @ThomasSpade 但是您希望浏览器看到?(查询字符串),对吧?使用查询字符串将 URL 重定向到 会破坏该目的。
  • 好吧,我真的不在乎浏览器看到什么。这与拥有干净的 URL 或 SEO 无关。我的所有用户都获得了一个 URL,他们需要将其发送给人们并用来做广告,但他们不喜欢 URL 中的问号。他们只是希望能够访问该页面而无需输入问号。
  • 似乎不起作用。无论我在地址栏中输入什么内容或点击什么链接,每个链接都会将我带到网站的主页。
【解决方案2】:

尝试使用:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ /?$1 [NC]

在您的 .htaccess 文件中,

让我知道它是否有效。

【讨论】:

  • 感谢您的回复。这没有用。它给了我一个内部服务器错误。
  • 检查这个:RewriteRule ^([^\?.]+)$ /?$1 [NC]
  • 这似乎也不起作用。大多数页面不再工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 2012-07-31
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多