为url重写配置htaccess



我需要帮助重写我的url。我想通过考虑我当前树的当前组织来精确地组织我的url:

-! /www
.htaccess,
index.php, ...
--! **/views**, /assets
pageA.php, pageB.php, pageC.php
---! **/pageA**, /pageB, /pageC, /errors (404.php, 500.php...)
pageA1.php, **pageA2.php**, pageA3.php

/!\我为每一页使用特定的名称,前缀和数字只是为了举例,以便更好地理解文件和文件夹之间的连接。事实上,我使用的页面名称类似于:"contact us.php"、"our product.php"…

(1) 当我转到pageA.php时,我想要这个url路径:www.mywebsite.fr/pageA

(2) 当我转到pageA2.php时,我想:www.mywebsite.fr/pageA/pageA2

(3) 我不想要扩展文件(.php,.html)

事实上,我无法进入路径(2),因为我有一个404页面。

我创建了与特定php页面同名的文件夹,这只是为了我自己的组织,但这可能是一种糟糕的方式(对于SEO或其他任何事情…)事实上,我不知道。。。

我的重写模块(在www的.htaccess中)是:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /
    # Retirer les extensions des pages et les rendres accessibles en lecture
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^ ]+).php
    RewriteRule ^/?(.*).php$ /$1 [L,R=301]
    # check to see if the request is for a PHP file:
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^/?(.*)$ /$1.php [L]
    # Suppression d'un sous répertoire
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/views/$1.php -f 
    RewriteRule (.*) /views/$1.php [QSA,L]
</IfModule>

这只是我的想法,但它应该可以工作:

RewriteRule ^page([A-Z]{1})([1-9]?).php$ http://www.mywebsite.fr/page$1$2
RewriteRule ^page([A-Z]{1})([1-9]{1})$ http://www.mywebsite.fr/page$1/page$1$2 [L,R=301]

第一个"重写"指令检查以开头的文件名是否匹配

页面

以结尾(在文件扩展名.php之前)

  • 单个字母(从a到Z);以及
  • (可选)单个数字(从1到9)

如果它这样做了,它会捕获字母(和可选数字),并重写URI,最后不使用.php文件扩展名。

对于那些包含可选数字的URI,第二个"重写"指令分别捕获字母和数字。

然后,它根据正确的文件夹结构构建重定向,同时部署捕获的字母和捕获的数字。

最新更新