【问题标题】:.htaccess not converting the dirty url into clean url.htaccess 不将脏网址转换为干净网址
【发布时间】:2017-02-12 14:52:29
【问题描述】:

我有一个名为 www.example.com/print?id=adder 的 URL
我希望它看起来像 www.example.com/print/adder

我正在使用以下 .htacces 代码

RewriteEngine on

# redirect all requests except only POST
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:php?)[\s?/] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteRule ^print/([a-z]+) print.php?id=$1 [NC,L]

但是,我仍然拥有像 www.example.com/print?id=adder 这样的 URL。

我正在使用wamp 3.0.6(Latest Version)PHP 7.0,10Apache 2.4.23。为什么我会面临这个问题。为什么代码不起作用?

【问题讨论】:

  • 您的 htaccess 在 /print 文件夹中吗?
  • 不,我的 .htaccess 位于根文件夹中,并且 print 不是其 print.php 的文件夹。我已隐藏 .php 扩展名,因此您看到的是 print?id= 而不是 print.php?id=
  • “但是,我仍然有类似...的 URL” - 您还需要更改应用程序中的 URL(这实际上是 更改 URL) -想必你已经这样做了?

标签: php .htaccess clean-urls


【解决方案1】:

要将您的 url 重定向到更简洁的版本,请将其放在最后一个 RewriteRule 上方

RewriteCond %{THE_REQUEST} /print/?(?:\.php)?\?id=([^\s&]+)
RewriteRule ^ /print/%1? [L,R]

【讨论】:

  • 您的代码更改了 URL,但由于该代码,它给出了内部服务器错误 500。
  • 您修改后的代码不接受@starkeen。它正在转换为干净的 URL,但显示相同的 500 错误,内部错误配置错误
  • Akshay,我认为您不会因为这条规则而收到错误消息。规则没问题,我已经在我的服务器上测试过了。请检查您的错误日志以获取有关 500error 的信息。
猜你喜欢
  • 2011-06-25
  • 2016-04-25
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多