簡體   English   中英

.htaccess將特定的URL段重寫為PHP文件,然后從URL中刪除php文件?

[英].htaccess rewrite specific URL segment to a PHP file and then remove the php file from the URL?

我在相同的URL上都有一個wordpress網站和一個自定義構建應用程序。 我想將所有CMS(客戶應用程序)URL重定向到某個php控制器文件。 重定向后,我希望從網址中刪除php文件

例如www.website.com/cms重定向到www.website.com/backend.php/cms,但URL繼續顯示為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,則該URL不會更改為www.website.com/cms,它將保持為www.website.com/backend.php/cms。

我不太擅長.htaccess,但我認為自己走的路正確。

您是否嘗試僅通過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的所有魔力。

我最終通過以下RewriteRule解決了這個問題

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

感謝那些試圖幫助的人:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM