.htaccess将特定的URL段重写为PHP文件,然后从URL中删除php文件?

时间:2017-03-08 17:17:39

标签: php wordpress .htaccess mod-rewrite

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

e.g。 www.website.com/cms 重定向到 www.website.com/backend.php/cms ,但网址仍显示为 www.website.com/ CMS

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

# 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,网址不会更改为www.website.com/cms,则会保留为www.website.com/backend.php/cms

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

2 个答案:

答案 0 :(得分:0)

您是否尝试过按网址路由:

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的网址的魔力。

答案 1 :(得分:0)

我最终通过以下RewriteRule

来解决这个问题
RewriteRule ^/?cms([A-Za-z0-9\-_\/]+)/?$ /backend.php [L]
RewriteRule ^/?cms /backend.php [L]

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