【问题标题】:URL Rewriting on Localhost? Apache PHP本地主机上的 URL 重写?阿帕奇 PHP
【发布时间】:2010-08-17 11:20:53
【问题描述】:

我在本地机器上的 Xampp 上使用 Apache mod_rewrite,但代码似乎不起作用。

请查看下面的代码并帮助我。我是这方面的初学者。

RewriteEngine on
RewriteBase /
RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteCond     %{REQUEST_FILENAME}     !-d
RewriteRule     ^m3/([a-zA-Z0-9-]+)$/?profile=com_frontpage&url=$1 [L,QSA] 

我想要的是下面的网址:

http://localhost/m3/?profile=com_frontpage&url=nero

改写为

http://localhost/m3/nero

请帮助我实现这一目标。

感谢

感谢您的快速回复

我已经实现了给定的修改后的代码,但是一旦我尝试输入新的 URL,我就会不断收到 404 错误。

我在 Windows 操作系统上使用 Xampp,因此将文件重命名为 .htaccess 被拒绝,我不确定使用“htaccess.txt”是否有效。

可能是什么问题?

感谢

【问题讨论】:

  • 你在哪里使用该规则?顺便说一句,RewriteRule 指令的模式和替换必须至少用一个空格或制表符分隔。

标签: apache .htaccess mod-rewrite


【解决方案1】:

更改您的RewriteBase

RewriteEngine on
RewriteBase /m3/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-]+)$ index.php?profile=com_frontpage&url=$1 [L,QSA]

编辑:固定语法。

【讨论】:

  • 我已经更改了我的代码,但我仍然收到 404 错误,这可能是什么问题。
  • 我已经编辑了上面的示例,因为我意识到您的RewriteRule 中没有空格,这意味着模式不匹配。立即尝试上述方法。
  • 感谢我不知道间距问题
【解决方案2】:

确保您在 Apache 的 httpd.conf 文件的文档根目录中设置了此选项:

AllowOverride All

【讨论】:

    【解决方案3】:

    如果您的 .htaccess 文件位于站点根目录中(在 htdocs 文件夹中),您需要此:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^m3/([a-zA-Z0-9-]+)$ m3/index.php?profile=com_frontpage&url=$1 [L,QSA]
    

    另外,您需要将文件另存为.htaccess。只需从您使用的任何编辑器中“另存为...”,然后将文件另存为.htaccess。唯一不能这样做的地方是在 Windows 资源管理器中,但这只是资源管理器很愚蠢;您绝对可以从程序(甚至记事本)中以正确的名称保存文件。

    或者,如果您愿意,可以从命令行执行:

    cd C:\path\to\xampp\htdocs\
    rename htaccess.txt .htaccess
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 2013-11-05
      • 1970-01-01
      • 2022-01-02
      • 2013-03-16
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多