【问题标题】:.htaccess rewriter rule working in localhost but not on live server.htaccess 重写规则在本地主机上工作,但不在实时服务器上
【发布时间】:2017-09-17 14:37:04
【问题描述】:

我的 .htaccess 文件。我有 index.php 和 movies.php。 www.website.com/movies 在本地主机和实时服务器中都可以正常工作。 但是 www.website.com/movies/movie-title 在本地主机中完美运行,但在实时服务器中却不行。我不知道问题所在。 在movies.php页面中,如果我们使用www.website.com/movies,我将显示标题列表,如果我们通过尝试访问www.website.com/movies/movie-title,我将尝试显示单个元素使用 $_GET['u']。

打开重写引擎

重写引擎开启

为 index.php 重写

重写规则 ^home$ index.php [NC,L]

为moviespage.php重写

重写规则 ^movies$ movies.php [NC,L]

为 movies.php?u=xxxxx 重写

RewriteRule ^movies/([0-9a-zA-Z_-]+)$ movies.php?u=$1 [NC,L]

【问题讨论】:

  • 您是遇到错误还是 .htaccess 文件不存在?如果是后者,请尝试在文件中添加错字并保存并重试。如果它仍然像没有文件一样,那么您的 Web 服务器可能不是 Apache 它可能没有配置为允许 htaccess 文件
  • 它不会抛出任何错误,但即使使用 /movies 或 /movies/title 也会显示相同的数据列表
  • 请查看链接peacockmattresses.com
  • 您是否尝试过更新movies.php 以记录$_GET["u"] 的内容并调试流程?也许这不是重写,而是 PHP 如何处理数据......
  • 您可能还想建立一个基本 href 以确保从正确的路径加载任何相对路径依赖项(如 JS 文件)而不是尝试从相对“电影”子文件夹加载(并由 htaccess 处理)

标签: php apache .htaccess url


【解决方案1】:

这对我有用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

让我知道它是否适合您!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-06-12
  • 2018-09-12
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多