【问题标题】:Remove .php extention from url working but seo friendly url not working从 url 工作中删除 .php 扩展名但 seo 友好的 url 不起作用
【发布时间】:2017-05-01 20:40:54
【问题描述】:

我想使用 .htaccess 制作对 seo 友好的网址。

我想转换下面的网址

http://localhost/projectname/pagename.php?id=1

http://localhost/projectname/pagename/1

我已经尝试过解决这个问题

RewriteRule ^pagename/([a-zA-Z0-9]+)/$ projectname/pagename.php?id=$1

但它不起作用

我也参考了下面的链接,但没有给我正确的解决方案

How to write htaccess rewrite rule for seo friendly url

Creating SEO friendly urls using htaccess

.htaccess 文件

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

 RewriteRule ^pagename/([a-zA-Z0-9]+)/$ projectname/pagename.php?id=$1

## 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]

使用上面的 htaccess 文件,我可以从 url 中删除 .php 扩展,但不能生成 seo 友好的 url。

非常感谢您。

【问题讨论】:

  • 您可以使用AltoRouter 来执行此操作。
  • 通过创建函数和调用函数没有 altorouter 我可以轻松转换 url 但我想使用 .htacesss 来实现它,这就是我问的原因

标签: php .htaccess url-rewriting


【解决方案1】:

你的规则末尾有一个斜线,所以你必须去:

http://localhost/projectname/pagename/1/

或者把规则改成:

RewriteRule ^pagename/([a-zA-Z0-9]+)$ projectname/pagename.php?id=$1

【讨论】:

  • 您的 htaccess 文件存储在哪里?尝试做 ^projectname/pagename/([a-zA-Z0-9]+)$
  • 更改了您提供的规则,但它将 url 转换为 projectname/pagename?id=$1
猜你喜欢
  • 2014-01-25
  • 2015-01-29
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2016-04-13
相关资源
最近更新 更多