Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 为url重写配置htaccess_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 为url重写配置htaccess

Apache 为url重写配置htaccess,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我需要帮助我的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 /!\我为每个页面使

我需要帮助我的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)是:


选项+FollowSymlinks
重新启动发动机
重写基/
#退休人员在讲座中介绍了页面扩展和可访问性
重写cond%{THE_REQUEST}^[A-Z]{3,9}\/([^\]+)\.php
重写规则^/?(.*)\.php$/$1[L,R=301]
#检查请求是否针对PHP文件:
重写cond%{REQUEST_FILENAME}\.php-f
重写规则^/?(.*)$/$1.php[L]
#镇压人权
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{DOCUMENT_ROOT}/views/$1.php-f
重写规则(.*)/views/$1.php[QSA,L]

这是我脑子里想不出来的,但它应该可以工作:

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]
第一个Rewrite指令检查以开头的文件名是否匹配

页面

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

  • 一个字母(从a到Z);及
  • (可选)单个数字(从1到9)
如果是这样,它将捕获字母(和可选数字),并重写URI,而不在末尾使用.php文件扩展名

对于包含可选编号的URI,第二个Rewrite指令将分别捕获字母和编号


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

请编辑您的问题,以反映更接近您需要解决的情况,我将戴上我的思考帽,再试一次。谢谢。谢谢你的回答,但我忘了指定页面的前缀不同。我用了前缀“pageA”,“pageB”。。。例如实际上更多的是:“我们的团队.php”,“产品.php”,“联系我们.php”,没有数字。。。页面:第1页,第2页。。。也有不同的名字。。。在这种情况下,我认为你的例子无法解决我的问题^^^谢谢你的u@Rounin如果你需要一张图片来说明我的文件夹/视图,请向我请求。请将你的评论更改为英文,或在StackOverflow上发布时删除它们。
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]