【问题标题】:.htaccess rewrite specific URL segment to a PHP file and then remove the php file from the URL?.htaccess 将特定的 URL 段重写为 PHP 文件,然后从 URL 中删除 php 文件?
【发布时间】:2017-03-08 17:17:38
【问题描述】:

我有一个 wordpress 网站和一个自定义构建应用程序都在同一个 URL 上。 我希望将我的所有 CMS(自定义应用程序)URL 重定向到某个 php 控制器文件。重定向后,我希望从 URL 中删除 php 文件

例如www.website.com/cms 重定向到 www.website.com/backend.php/cms 但 URL 继续显示为 www.website.com/厘米

到目前为止,我有以下内容:

# Handle the custom App URLs
RewriteCond %{HTTP_HOST} ^(www.)?website.com/cms$
RewriteCond %{REQUEST_URI} !^backend.php/cms/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ backend.php/cms/$1

# Handle the Wordpress URLs by removing index.php
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

编辑:

问题是我所拥有的不起作用。

如果我访问 www.website.com/cms,我会收到 404。

如果我访问 www.website.com/backend.php/cms,URL 不会更改为 www.website.com/cms,它会保持为 www.website.com/backend.php/cms

我不擅长 .htaccess,但我认为我走的是正确的路线。

【问题讨论】:

  • 你的问题是什么?
  • 用解释我的问题的更多信息更新了我的问题

标签: php wordpress .htaccess mod-rewrite


【解决方案1】:

您是否尝试通过 url 进行路由:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/cms/(.*)$ /backend.php [L]
#or RewriteRule ^/cms/(.*)$ /yourcms/backend.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

所有关于“理解”你在 cms 中读取 REQUEST_URI 的 url 的魔法。

【讨论】:

  • 我试过了,但没有用。我的 index.php 网址受到了影响。
【解决方案2】:

我最终通过以下 RewriteRule 自己解决了这个问题

RewriteRule ^/?cms([A-Za-z0-9\-_\/]+)/?$ /backend.php [L]
RewriteRule ^/?cms /backend.php [L]

感谢那些试图提供帮助的人:)

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 2020-09-06
    • 2013-10-08
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多