2015-02-11 22 views
1

,而我知道這已經被問萬次,我查了大量的問題,並從他們試圖代碼,但在我的情況下,既不工作。從URL刪除.PHP - 特定情況下(嘗試一切)

這是我的.htaccess文件,一切正常,到目前爲止,但我不能設法從文件中刪除擴展名爲.php,每當我從其他的答案試圖代碼只是把500或404錯誤。請告知添加的地點和內容。文件夾的結構爲localhost/MyFolder中/ somefile.php

只要是明確的 - 本地主機/ MyFolder中/是我的項目根。

RewriteEngine On  

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ /myfolder/$1/ [L,R=301] 

RewriteRule  ^team-news/([0-9]+[/])?$ posts.php?p=$1&cat=Team\ News 
RewriteRule  ^product-news/([0-9]+[/])?$ posts.php? p=$1&cat=Product\ News 
RewriteRule  ^member-specials/([0-9]+[/])?$ posts.php?p=$1&cat=Member\ Specials 
RewriteRule  ^ambassador-blogs/([0-9]+[/])?$ posts.php?p=$1&cat=Ambassador\ Blogs 
RewriteRule  ^user/([0-9]+[/])?$   profile.php?id=$1 
RewriteRule  ^browse-all/([0-9]+[/])?$ searchall.php?p=$1 
RewriteRule  ^edit/([0-9]+[/])?$   edit.php?id=$1 
RewriteRule  ^articles/([0-9]+[/])?$  post.php?id=$1  
+0

不知道你做錯了什麼,但有一些工具,如[this](http://htaccess.madewithlove.be/),可能能夠幫助你。 – Naruto 2015-02-11 16:04:15

+0

你能澄清錯誤是什麼,哪個網址不起作用? – anubhava 2015-02-11 16:04:57

+0

這裏發佈的代碼都是可行的,但現在我需要插入一個從文件中刪除.php的部分,而且我嘗試的任何內容都不起作用。 – Danijelb 2015-02-11 16:06:57

回答

0

刪除擴展名,說;在瀏覽器中的PHP或HTML將讓瀏覽器找到一點點努力找到源文件。如果你需要它,這樣,這個如下可以幫助你:

更新:

PHP:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)/$ /$1.php 

HTML:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)/$ /$1.html 

那些將刪除所有擴展你的文件(php和html)。 注意:看看服務器使國防部重寫模塊/擴展

+0

這給了我無限循環,例如/myfolder/search.php路徑到/myfolder/search/.php/.php/.php/到無窮 – Danijelb 2015-02-11 16:25:39

+0

我更新了我的答案,看看它是否有幫助。不要忘記檢查是否服務器(Apache /其他)使您能夠採取行動 – 2015-02-11 16:55:33

+0

我檢查,它確實。你看到的規則我發佈了所有的工作,例如localhost/myfolder/user/6 /正在工作。添加尾部斜槓規則也適用。但無論我插入刪除.php規則,它都會引發錯誤。也許這是干擾我的一些其他規則? – Danijelb 2015-02-11 17:12:44

1

這個片段將讓你重寫刪除php附加信息:如果你希望你的URL有一個尾隨/,你可以使用這個片段

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

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

Source

0

只要你301規則下面添加此規則:

RewriteEngine On 
RewriteBase /myfolder/ 

# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^%1 [R=302,L,NE] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f [NC] 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

它給了我404錯誤,例如/myfolder/search.php路徑它到/ myfolder/search /但是用404 – Danijelb 2015-02-11 16:23:46

+0

ok檢查已更新規則現在。 – anubhava 2015-02-11 16:26:46

+0

仍然沒有,現在它增加了一個/.php/到我的其他網址,並拋出404錯誤的PHP文件。也許我在我的其他規則中做錯了一切,把所有其他的東西混淆了? – Danijelb 2015-02-11 16:34:09

0

您應該使用兩個.htaccess文件。首先應該在您的本地主機的根去(請求重定向到myfolder),第二個應該進入myfolder(路線對你的PHP文件匹配):

.htaccess

RewriteEngine On  

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ /myfolder/$1/ [L,R=301] 

MyFolder中.htaccess

RewriteEngine On 
RewriteBase /myfolder/ 

RewriteRule ^team-news/([0-9]+[/])?$   posts.php?p=$1&cat=Team\ News [L] 
RewriteRule ^product-news/([0-9]+[/])?$  posts.php?p=$1&cat=Product\ News [L] 
RewriteRule ^member-specials/([0-9]+[/])?$ posts.php?p=$1&cat=Member\ Specials [L] 
RewriteRule ^ambassador-blogs/([0-9]+[/])?$ posts.php?p=$1&cat=Ambassador\ Blogs [L] 
RewriteRule ^user/([0-9]+[/])?$    profile.php?id=$1 [L] 
RewriteRule ^browse-all/([0-9]+[/])?$  searchall.php?p=$1 [L] 
RewriteRule ^edit/([0-9]+[/])?$    edit.php?id=$1 [L] 
RewriteRule ^articles/([0-9]+[/])?$   post.php?id=$1 [L] 

注意我如何也包括[L]一旦找到匹配就停止做任何事情。

相關問題