URL重写/重定向/使用的.htaccess
Server版本限制取决于多个条件:阿帕奇/ 2.4.18(Win32的)的OpenSSL/1.0.2e PHP/7.0.8URL重写/重定向/使用的.htaccess
我意识到这个问题已经被问过无数时间,而我在零部件的解决方案,我没有在所有运动部件正常工作的解决方案..
我有4种类型的url
首先...(索引文件重定向)
http://localhost/myproject/index.php - 我希望... http://localhost/myproject
二....(这个解决方案是必需的系统范围 - 适用于所有.php文件) http://localhost/myproject/views/forgotpassword.php - 我想作为 http://localhost/myproject/views/forgotpassword
三...(需要此解决方案系统范围 - 为所有/视图/文件) http://localhost/myproject/views/forgotpassword.php - 我想作为 http://localhost/myproject/forgotpassword
四...(这个解决方案是只有两个文件)
http://localhost/myproject/views/propertydetail.php?property_id=4 - 我想作为 http://localhost/myproject/property/4
我想限制对所有以前的名称和路径(我认为这是不可能的,因为这样做会使代码无法正常工作 - 即没有这样做,之后的作品),所以我想重定向将被使用,但如果需要可能的限制......
以下是我综合.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 [NC]
RewriteRule^%1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule^%{REQUEST_URI}.php [L]
## hide views folder
RewriteRule ^$ views/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ views/$1
## remove special characters and clean the urls
RewriteRule ^property/([0-9]+) views/propertydetail.php?property_id=$1
RewriteRule ^user/([0-9]+) views/viewprofile.php?profile_id=$1
与此仅第一部分(PHP的隐藏和重定向工作)休息views文件夹清除和字符清理不起作用。我喜欢的解决方案,因为当时我没有改变我的代码的第一部分,一切依旧...
对于某些部分重构你的规则需要以不同的顺序是这样的:
ErrorDocument 404 default
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /myproject/
## hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule^%1 [R=301,L,NE]
## remove special characters and clean the urls
RewriteRule ^property/(\d+)/?$ views/propertydetail.php?property_id=$1 [L,QSA,NC]
RewriteRule ^user/(\d+)/?$ views/viewprofile.php?profile_id=$1 [L,QSA,NC]
## hide views folder
RewriteRule ^$ views/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!view/)(.*)$ views/$1 [L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/? $1.php [L]
确定你有正确的'RewriteBase'值。暂时留下线路。 – Deadooshka
删除重写基地正在myproject/index.php其他地方..也像myproject/views/forgotpassword.php所有旧的链接不重定向到myproject /忘记密码,进一步所有myproject /忘记密码没有得到他们的CSS这是存储在myproject/css/- 这是否意味着我必须通过我的整个代码,并更改链接,不能像它的工作方式.php扩展正在处理内部和外部 – DragonFire
外部重定向意见 - > non-views'RewriteCond%{THE_REQUEST} \ h/views(/ \ S *)RewriteRule ^%1 [R,L]' – Deadooshka