【问题标题】:Rewrite .php to directory with htaccess使用 htaccess 将 .php 重写到目录
【发布时间】:2013-12-02 20:50:26
【问题描述】:

当有人进入站点并假设他进入 index.php 时,我正在尝试制定重写规则,那么他的 url 将是 mysite.com/index/ 而不是 mysite.com/index.php。 另一个例子,如果他访问 about.php,那么它将是 mysite.com/about/。

我希望我说得够清楚,不能让我的代码工作(第一次使用 htaccess)。

【问题讨论】:

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

将此代码放入您的DOCUMENT_ROOT/.htaccess 文件中:

RewriteEngine On

## hide .php extension
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

【讨论】:

  • 我的链接现在都不起作用:\ 它只是为我抛出 404 错误。 “找不到对象!”,但它确实将 url 编辑为 /page_name/。
  • 哪个链接会抛出 404?确保这是放在DOCUMENT_ROOT/.htaccess
  • 我不小心删除了其中一个字符。现在还有另一个问题,如果我单击主页按钮(href="index.php),它会将我扔到 URL:"localhost//"。但是其他一切都完美!谢谢!编辑:修复它,将 index.php 更改为 home.php。
  • 请考虑将其标记为“已接受”,以便以后遇到类似问题的用户可以轻松查看。
猜你喜欢
  • 2014-06-10
  • 2012-05-25
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多