【问题标题】:PHP Rewriting Url Not workingPHP重写网址不起作用
【发布时间】:2013-09-22 17:08:52
【问题描述】:

在这里,我遇到了重写 url 的问题。我正在使用带有 xampp 的 php(5.0 以上版本)。

我当前的网址是
原始网址:/localhost/test/signup.php
重定向网址:/localhost/test/signup/

我在 htdocs 中写了重写规则

  RewriteEngine On
  RewriteBase /test/
  RewriteRule ^signup/$ signup.php

它不工作。我也更改了 httpd.conf 设置。但没用。

【问题讨论】:

标签: php apache .htaccess url-rewriting url-rewrite-module


【解决方案1】:

使用下面的工作代码来隐藏 .php 扩展名。

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

【讨论】:

  • 谢谢,但它要求在项目文件夹中创建单独的文件夹。是否可以没有文件夹
  • 你可以从http中删除文件夹名试试
  • RewriteBase /test/ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/$ $1 [R=301,L] # 将外部 .php 请求重定向到无扩展 url RewriteCond % {THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ RewriteRule ^(.+)\.php$ $1 [R=301,L] # 解析.php
    用于无扩展名 php url 的文件 RewriteRule ^([^/.]+)$ $1.php [L]
    根据您的代码,我已按照我的要求进行了上述编辑。例如,我单击 product.php 以重定向其测试/产品。但它显示页面未找到错误。它询问产品文件夹。有没有可能避免这种情况。谢谢
  • 如何通过这个重写 url 传递 post 变量。
  • post 变量来自你必须使用 get 的表单
【解决方案2】:

你遇到了什么错误?

同时你可以试试这个

RewriteEngine On
RewriteBase /test/
RewriteRule ^(signup)$ signup.php [L]

对于所有 php 文件:

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

【讨论】:

  • 不仅signup.php,每个文件都需要重写,那么语法是什么?注册重写需要创建文件夹。我们可以在没有文件夹的情况下重写吗?
  • 编辑了我对这种情况的回答。让我知道它是否适合您。
  • 它正在工作,但是如何通过这个 url 重写传递 post 变量
  • 我认为不会对 POST / GET 变量产生任何影响。他们必须照常工作。如果您在那里遇到问题,请告诉我错误。
  • 对于一个正常的获取 url,即使你点击了这个 --> localhost/test/signup?id=4 它会工作的。
猜你喜欢
  • 1970-01-01
  • 2017-07-10
  • 2015-09-10
  • 1970-01-01
  • 2013-09-16
  • 2014-11-15
  • 2016-01-09
  • 1970-01-01
相关资源
最近更新 更多