【问题标题】:PHP page not loading; Wordpress taking over with 404PHP页面未加载; WordPress 接管 404
【发布时间】:2013-09-13 15:43:55
【问题描述】:

我有一个问题,当我尝试在我的浏览器中加载某个 .php 页面时,在安装了 Wordpress 的域上,Wordpress 抛出 404 而不是页面本身。

问题页面是:

http://healthysurprise.com/special/sign-up?product=healthy

您可以在此处查看模拟页面(只需删除“/special”):

http://healthysurprise.com/sign-up?product=healthy

php 需要 URL 字符串来动态加载页面。该页面是“sign-up.php”并且在目录中。我错过了什么?

注意事项:
- 已安装 wordpress
- index.php 在两个位置都可以正常加载
- 无论目录是什么,它似乎都在这样做
- 之前有一个名为“注册”的 WP 页面模板,但我刚刚删除了它

这是我的 .htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
RewriteRule ^/([^-]*)$ /$1.php

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

## 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 forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

</IfModule>

# END WordPress

【问题讨论】:

  • 你必须以某种方式将它链接到 WordPress...阅读Template Hierarchy
  • 我不能只加载我自己的 php 页面?我将 WP 安装移动到 /blog,为什么它会干扰域上的其他页面?此外,index.php 在子目录中工作。
  • 检查 htaccess 是否有任何 url 重写。
  • 我用我的 .htaccess 更新了问题

标签: php wordpress


【解决方案1】:

我发现了问题所在。它在 .htaccess 文件中。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
RewriteRule ^/([^-]*)$ /$1.php

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

## 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 forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

</IfModule>

# END WordPress

Wordpress 的首要规则是搞砸一切。通过删除或注释掉它们,无论用户调用 /foo 还是 /foo.php 都会加载正常页面

这是工作的 .htaccess 文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteBase /blog/
# RewriteRule ^index\.php$ - [L]
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /blog/index.php [L]
# RewriteRule ^/([^-]*)$ /$1.php

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

## 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 forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

</IfModule>

# END WordPress

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多