簡體   English   中英

[edit]如何根據這些需求使用.htaccess重寫我的URL?

[英][edit]How can I rewrite my URL with .htaccess according to these needs?

我已經使用.htaccess文件嘗試了一些配置,但我真的無法找出問題所在。

我是.htacces文件的新手,我只想要1個簡單的重寫。

我該如何重寫:

  • 我的頁面在我的~/Pages文件夾中
  • 我不想顯示: http://host.com/Pages/page.php : http://host.com/Pages/page.php
  • 我想將此重寫為: http://host.com/page : http://host.com/page
  • 例如~/Pages/Folder/page.php變為: http://host.com/Folder/page : ~/Pages/Folder/page.php

我也希望人們可以導航而不必考慮URL欄中的大寫字母。

提前致謝。

編輯:
好的,我刪除了擴展名。 現在我試圖指向〜/ Pages / index.php
有人訪問網址http://HOST.com/index時

這是我到目前為止所得到的:

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

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_URI} !urenreg/Pages/
RewriteCond ^(.+?)?$ Pages/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)?$ /$1.php [L]

問題:它一直指向/ urenreg / pages,並且未在鏈接中輸入文件名(懷疑)

例如

從以下位置移動您的.php文件:

public_html/*.php

至:

public_html/gta/*.php

發生的情況是您正在訪問:

http://domain.com/gta/about

然后嘗試在以下位置找到.php文件:

http://domain.com/gta/about.php

鑒於所有文件都在文件夾gta上,因此您可以准確地擁有.htaccess文件,但必須將其放在public_html文件夾中,並且gta文件夾內不應有.htaccess文件:

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[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

這就是我最終的方式。

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

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/urenreg/$1.php -f
RewriteRule ^(.+?)/?$ /urenreg/$1.php [L]

RewriteCond %{REQUEST_URI} !lib/
RewriteCond %{REQUEST_URI} !dist/
RewriteCond %{REQUEST_URI} !js/
RewriteCond %{REQUEST_URI} !grunt/
RewriteCond %{REQUEST_URI} !less/
RewriteCond %{REQUEST_URI} !test-infra/
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteCond %{REQUEST_URI} !urenreg/Pages/
RewriteRule (.*) Pages/$1/ [L]

暫無
暫無

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

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