我以前问过这个问题,并使用了一些我不理解的代码,现在它都崩溃了。希望我能比以前更准确地表达我的意图。我正在尝试学习正则表达式,但我似乎无法将学到的知识应用于 mod-rewrite 技术。
我的网站有很多.php
以不同文件夹深度结尾的网址。我希望所有的网址都不管子site.net/folder/folder/filename/
文件夹的数量。
我的问题是我的一些表单使用 POST 和 GET 请求。因此,当用户单击上传以上传文件时,我通常将表单的操作部分设置为.php
文件,例如,site.net/folder/script/upload.php
或者通常在重定向到页面site.net/folder/folder/scripts/upload.php
之前处理文件的上传。xyz
当 .php 网址被清除时,我也无法找到上传脚本。可以构建 mod-rewrite 规则以在不妨碍我的“worker”脚本(upload.php、processcontactinfo.php 等)的情况下获取 php 扩展吗?编辑
这是我的脚本到目前为止的样子。
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^POST\ /([^.\ ]+\.)+php(\?[^\ ]*)?\ HTTP
RewriteCond %{THE_REQUEST} ^GET\ /([^.\ ]+\.)+php(\?[^\ ]*)?\ HTTP
RewriteRule ^(.+)\.php$ http://www.site.net/$1 [R=301,L]
RewriteRule ^([^/]+/)*index/?$ http://www.site.net/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ http://www.site.net/$1 [R=301,L]
RewriteCond $1 !^([^.]+\.)+([a-z0-9]+)$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*[^/])$ /$1.php [L]
RewriteRule (.*)/$ $1.php [L]
我尝试了不同的变体,但就像我说的那样,我不擅长阅读或创建正则表达式。因此,这充其量只是反复试验。这允许我通过 site.net/folder/filename/ 访问文件文件,但它不会将请求从 site/folder/filename.php 更改为 site.net/folder/filename/。同样在这一点上找不到各种脚本。